{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/jpeg": "/9j/4AAQSkZJRgABAQEBLAEsAAD/7S4GUGhvdG9zaG9wIDMuMAA4QklNBCUAAAAAABAAAAAAAAAA\nAAAAAAAAAAAAOEJJTQQ6AAAAAACTAAAAEAAAAAEAAAAAAAtwcmludE91dHB1dAAAAAUAAAAAQ2xy\nU2VudW0AAAAAQ2xyUwAAAABSR0JDAAAAAEludGVlbnVtAAAAAEludGUAAAAAQ2xybQAAAABNcEJs\nYm9vbAEAAAAPcHJpbnRTaXh0ZWVuQml0Ym9vbAAAAAALcHJpbnRlck5hbWVURVhUAAAAAQAAADhC\nSU0EOwAAAAABsgAAABAAAAABAAAAAAAScHJpbnRPdXRwdXRPcHRpb25zAAAAEgAAAABDcHRuYm9v\nbAAAAAAAQ2xicmJvb2wAAAAAAFJnc01ib29sAAAAAABDcm5DYm9vbAAAAAAAQ250Q2Jvb2wAAAAA\nAExibHNib29sAAAAAABOZ3R2Ym9vbAAAAAAARW1sRGJvb2wAAAAAAEludHJib29sAAAAAABCY2tn\nT2JqYwAAAAEAAAAAAABSR0JDAAAAAwAAAABSZCAgZG91YkBv4AAAAAAAAAAAAEdybiBkb3ViQG/g\nAAAAAAAAAAAAQmwgIGRvdWJAb+AAAAAAAAAAAABCcmRUVW50RiNSbHQAAAAAAAAAAAAAAABCbGQg\nVW50RiNSbHQAAAAAAAAAAAAAAABSc2x0VW50RiNQeGxAcsAAAAAAAAAAAAp2ZWN0b3JEYXRhYm9v\nbAEAAAAAUGdQc2VudW0AAAAAUGdQcwAAAABQZ1BDAAAAAExlZnRVbnRGI1JsdAAAAAAAAAAAAAAA\nAFRvcCBVbnRGI1JsdAAAAAAAAAAAAAAAAFNjbCBVbnRGI1ByY0BZAAAAAAAAOEJJTQPtAAAAAAAQ\nASwAAAABAAIBLAAAAAEAAjhCSU0EJgAAAAAADgAAAAAAAAAAAAA/gAAAOEJJTQQNAAAAAAAEAAAA\nHjhCSU0EGQAAAAAABAAAAB44QklNA/MAAAAAAAkAAAAAAAAAAAEAOEJJTScQAAAAAAAKAAEAAAAA\nAAAAAjhCSU0D9QAAAAAASAAvZmYAAQBsZmYABgAAAAAAAQAvZmYAAQChmZoABgAAAAAAAQAyAAAA\nAQBaAAAABgAAAAAAAQA1AAAAAQAtAAAABgAAAAAAAThCSU0D+AAAAAAAcAAA////////////////\n/////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////\n////////////A+gAAAAA/////////////////////////////wPoAAA4QklNBAAAAAAAAAIAADhC\nSU0EAgAAAAAAAgAAOEJJTQQwAAAAAAABAQA4QklNBC0AAAAAAAYAAQAAAAI4QklNBAgAAAAAABAA\nAAABAAACQAAAAkAAAAAAOEJJTQQeAAAAAAAEAAAAADhCSU0EGgAAAAADYQAAAAYAAAAAAAAAAAAA\nBN8AAAM7AAAAFgA5ADcAOAAtADMALQAzADEAOQAtADMAMAA3ADEANQAtADIAXwBUAGUAbQBwAAAA\nAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAM7AAAE3wAAAAAAAAAAAAAAAAAAAAABAAAA\nAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIAAAAGYm91bmRzT2JqYwAAAAEAAAAA\nAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAAE\n3wAAAABSZ2h0bG9uZwAAAzsAAAAGc2xpY2VzVmxMcwAAAAFPYmpjAAAAAQAAAAAABXNsaWNlAAAA\nEgAAAAdzbGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAAAAAABm9yaWdpbmVudW0AAAAM\nRVNsaWNlT3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlwZWVudW0AAAAKRVNsaWNlVHlwZQAA\nAABJbWcgAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAA\nAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAABN8AAAAAUmdodGxvbmcAAAM7AAAAA3VybFRFWFQA\nAAABAAAAAAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQAAAABAAAAAAAGYWx0VGFnVEVYVAAA\nAAEAAAAAAA5jZWxsVGV4dElzSFRNTGJvb2wBAAAACGNlbGxUZXh0VEVYVAAAAAEAAAAAAAlob3J6\nQWxpZ25lbnVtAAAAD0VTbGljZUhvcnpBbGlnbgAAAAdkZWZhdWx0AAAACXZlcnRBbGlnbmVudW0A\nAAAPRVNsaWNlVmVydEFsaWduAAAAB2RlZmF1bHQAAAALYmdDb2xvclR5cGVlbnVtAAAAEUVTbGlj\nZUJHQ29sb3JUeXBlAAAAAE5vbmUAAAAJdG9wT3V0c2V0bG9uZwAAAAAAAAAKbGVmdE91dHNldGxv\nbmcAAAAAAAAADGJvdHRvbU91dHNldGxvbmcAAAAAAAAAC3JpZ2h0T3V0c2V0bG9uZwAAAAAAOEJJ\nTQQoAAAAAAAMAAAAAj/wAAAAAAAAOEJJTQQUAAAAAAAEAAAAAjhCSU0EDAAAAAAkeQAAAAEAAABq\nAAAAoAAAAUAAAMgAAAAkXQAYAAH/2P/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJS\nR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gAB\nAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIY\nAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQA\nAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJU\nUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAx\nOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIu\nMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAA\nAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAk\noAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVD\nIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl\nIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl\nIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2UgVmlld2lu\nZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcg\nQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAA\nAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAA\nAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAF\nAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAA\nlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQEr\nATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoC\nAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMW\nAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEE\nfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYn\nBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8I\nMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqB\nCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYN\nQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBD\nEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QT\nxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJ\nF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib\n2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBs\nIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgl\nlyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysC\nKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsx\nEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdg\nN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+\nYD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWa\nRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpN\nk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXC\nVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxe\nvV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fp\naD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx\n8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwh\nfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteH\nO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6\nkuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCe\nrp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sC\nq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4\nWbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XI\nxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bU\nSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb\n42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/y\njPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23////tAAxBZG9i\nZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEM\nDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQR\nDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAoABqAwEiAAIR\nAQMRAf/dAAQAB//EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAA\n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\nAABhY3NwTVNGVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLUhQICAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNkZXNj\nAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFlaAAACLAAAABRi\nWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAADTAAAAIZ2aWV3AAAD1AAA\nACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAAAAxyVFJDAAAEPAAACAxnVFJDAAAE\nPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHlyaWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2th\ncmQgQ29tcGFueQAAZGVzYwAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdC\nIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAWFlaIAAAAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABv\nogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAA\nAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5j\naAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAA\nAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAA\nAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElF\nQzYxOTY2LTIuMQAAAAAAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2\nMTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPt\nzAAEEwsAA1yeAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAA\nAAAAAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAoAC0A\nMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQAqQCuALIAtwC8\nAMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEyATgBPgFFAUwBUgFZAWAB\nZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJL\nAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3ID\nfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTw\nBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8G\nwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjS\nCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkL\nUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3DDd4N+A4T\nDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4QmxC5ENcQ9RETETER\nTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTO\nFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y\n1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0e\nHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h\n+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcY\nJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs\n1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMymzLU\nMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQOIw4yDkFOUI5\nfzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0Bk\nQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BI\nBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/d\nUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9Y\nfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFP\nYaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q\n92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTM\ndSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7CfyN/\nhH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gEiGmIzokziZmJ/opk\nisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLjk02TtpQglIqU9JVflcmW\nNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqIm\nopajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGv\nFq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7wh\nvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnK\nOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk\n2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/n\nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0wvVQ9d72bfb7\n94r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t////4TnJaHR0cDovL25zLmFkb2JlLmNvbS94\nYXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5\nZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBY\nTVAgQ29yZSA1LjAtYzA2MSA2NC4xNDA5NDksIDIwMTAvMTIvMDctMTA6NTc6MDEgICAgICAgICI+\nCiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYt\nc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAg\nICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4\nbXA6Q3JlYXRvclRvb2w+QWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3M8L3htcDpDcmVhdG9y\nVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTYtMDMtMDNUMTY6MTI6MDMrMDU6MzA8\nL3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNi0wMy0wM1QxNjox\nMjoxMSswNTozMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIw\nMTYtMDMtMDNUMTY6MTI6MTErMDU6MzA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgIDwvcmRmOkRl\nc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAg\nICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogICAgICAgICA8\nZGM6Zm9ybWF0PmltYWdlL3RpZmY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+\nCiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnBo\nb3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyI+CiAgICAgICAgIDxw\naG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90\nb3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+\nCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91\ndD0iIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4w\nL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu\nMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyI+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5p\naWQ6QkRBNzhBOTUyQ0UxRTUxMThFQTM5QTVDRkVFOTAxNDQ8L3htcE1NOkluc3RhbmNlSUQ+CiAg\nICAgICAgIDx4bXBNTTpEb2N1bWVudElEPnhtcC5kaWQ6QkNBNzhBOTUyQ0UxRTUxMThFQTM5QTVD\nRkVFOTAxNDQ8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3Vt\nZW50SUQ+eG1wLmRpZDpCQ0E3OEE5NTJDRTFFNTExOEVBMzlBNUNGRUU5MDE0NDwveG1wTU06T3Jp\nZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJk\nZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgog\nICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAg\nICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDpCQ0E3OEE5NTJDRTFFNTEx\nOEVBMzlBNUNGRUU5MDE0NDwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0\nRXZ0OndoZW4+MjAxNi0wMy0wM1QxNjoxMjowMyswNTozMDwvc3RFdnQ6d2hlbj4KICAgICAgICAg\nICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRv\nd3M8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAg\nICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAg\nICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAg\nICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9w\nIHRvIGltYWdlL3RpZmY8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxp\nPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAg\nICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAg\nICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOkJEQTc4QTk1MkNFMUU1MTE4RUEzOUE1\nQ0ZFRTkwMTQ0PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hl\nbj4yMDE2LTAzLTAzVDE2OjEyOjExKzA1OjMwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAg\nICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M1LjEgV2luZG93czwvc3RF\ndnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RF\ndnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNl\ncT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAg\nPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVu\nZD0idyI/Pv/bAEMAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB\nAQEBAQEBAQEBAQEBAQEBAQEBAf/bAEMBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB\nAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAOcAmQMBEQACEQEDEQH/xAAeAAAB\nBAMBAQEAAAAAAAAAAAAHBAUGCAIDCQEACv/EAFAQAAAGAgAFAgIHBAYHBAcJAAECAwQFBgcRAAgS\nITFBURNhCRQVInGBkRYyobEXI1LB0fAkQlNikuHxCiZjghlDVnKW0tUlJygzNDZEwuL/xAAeAQAC\nAwEBAQEBAQAAAAAAAAAFBgMEBwIBCAAJCv/EAFIRAAEDAgUCAwUEBwQHBQcDBQECAwQFEQAGEiEx\nQVEHE2EUInGBkRUyofAWI0JSscHRCCTh8RczU2JyktI0Q4KToiUmVFVjc5U1dNSytbbC4v/aAAwD\nAQACEQMRAD8ArfYYFvJY6LMNDiLtBs3dgIG7gogoGxDuAgPUXfb03x/Pup1xz/SPDbIKWZnmRV82\nN0kC/wAQRa3ocf6Ack1F6j5nmUmQbx3n3miFAWKHEqAtfbg3IPr84Zc7s4tOPU2h1PiKNk0DB3+8\nBkNEPrQj3AAHwPpv04N0rL36LeINNqzqChqQ4tlSjcApX7yQQehvb5kD1csnwI1MzZLaTZHnF9BS\nbC4cBKTYjqSNtudu+FMtWXD/ABilPoGFRRs0buQMBtmKq2OURHXfXcuxEPQdjrfFnN9eisZ8pCWi\nEe0LciqKTpuHQRYgc/eF7ne31oZKrCqVnup0WTszJkOtAKsAUO602F9ibK423HJFsPuRb4naMRxz\nUxupdojHn6gN3AyRSkEQ9QEAEd/h7gIcKtEoT9H8T6dU5GoMPPOxyVX0lDitYG9gAd/+b1wYyLRT\nRc/VDRZKZC5qCm1tl6ldrWNrgWHp0xEbJEyBscx1h/rDJIljHfUJjiHUiqmJh862AgO9a18/R7zb\nJgws80lMVSEKkIlMe4QN1pWE8d7jvv25xL4fVgNZ7r1BfIu4udHbBFvdcDmnnkFJT1Ow6YOWbbsx\ns+GodJMwC5SGDXMHUIiApCmUwh334N3/AIj54y/KkGc14uUaROKzHJnRAVG40PbgX2uDbbfftscA\nvCugvULxDqxCQEPJqrZ5A/WJcIB+BAAPTta2BxkJrLMqCzfqisLXqizCIifpFM7lubex7BsNaD39\ndb3p+Zo0CBnzLj0PSl1xM21iAQ422ogbHmyifmfTFnwirjU7O9cpjoQHWhUEoBAvqQl5BA2vfk7b\nc/K2ebbfCzeBZFsgdMzh5CMCFKQwdRVOtoJv5DoQ17DvjJafJq1V8V8iRJynfZo1ddUorJ0lKo0p\nkcf8Sbg7/PGceEeXJNF8VxN8tSQ1NnqUrTsU+XItvbqSPx62wC7A/nariwximXI2ZRZU0w2fXQVI\niRQ1sA1oQ0G++9fLjVvEzLVONYys+zYuSa8zcbatSUqfJ27FB9Nr4O+G1diZp8WZUN5KNbs19aib\nXCg4tauRubg+oti69Xe1dTAsWKgoAqaktPibEOsXARBOvex/e+IAiPr1aAN9uM38Sc71ictGXBrt\nPr8SITuCpCqqyLXtuNA/n1xjNQy3MV45T6ikLKk5pkOoO+kI+0VEEcptpsPQbbG+Ks4hsU7TsYps\nmyq6bcG67sTAY4AIOjndCPyD+tHwO/PpvjUPGzI0d3LdQqHuKWlEZlQA6JW0wAOpv934n1xqed6/\nS8y+MxivIQtz7QahbgH3mFJjAdbfcHr6EkXtxyyR8DcsWltL4SHfTUlYXDhQ5w6hAZN2mQDd+33S\nAIj8/AhoeKuYvE05RyiuhqASqn5ehwm+ySKW0gK69VW+V+b4xH+0nl2cjxdbgxlKTGp0WiMoQgEI\nPlwYylWA2HvE8dsCjFFxkcY3fMTaOVODJ7epFdACmESCkizaNimAd60ApGDe+2td+KzXh8/XPC3K\n9RUkh1OU2HVjcHU+HpSj03/Wg26X6cY0fxeqlLrEDwzp08o9qgZVpcV69tSVrcdcKSNiLhYPA9L3\n2N+GEUc02C6W2RcAq7iZFpAGAxxEQ+rtCuhKIiPYA+sa9QATD8uGfwYzXTsh+GFCpE0paIhzZhUr\nYrD82SCrfck6SDwLjnk4xz+1DQ51CpmQqVSUqbjzaQKpZFwkiRIKEq2G2ryr3tuONgbZ1O0L4W5k\nbo3KsIx0pTKufp6h0Kn2jPHEADv3IBw36aHxrysZcpczOtBreYKUHGkS845mltLb2CmlNwWkkWNi\nFFk/Mk4N5jiw6v8A2d8gU6paDPp9brYJctq0uRaWL73NiUqA22O99jg7z1jLzELto5BTR6NLEfD0\nm++Kcuzkm5TeN6MLcQ7h26fAb3w7/wBmKotZeZzdFrjoW+c0VhpCnjuGmjDUlN1b2SVE2Hf0x8/+\nK+XpuQMh0SsUlJtmemzYKi390mHLp8gXte5Gu9/UgbXwMZAr7C+ccWzS5zBGykfa2DrrMIlMANG2\nurfbsJSnL8y7D3ExnNAzBnCs1PLZCnUUultKdYsR5kWpzUqTdN9whwXvc7j5MHg4+rMngL4kUKuk\nCUh/LdQipctqIE2W0tSb72OoJO24I64OGXslscoVpWjQpyqSbhxHyqIkEBMUkc6ROsJdCI7AhwER\nAewAIjrhU8Glzv8ASpmZvM6ysRIVJdi+cdkKkCosuaQrYaglIIAF79cL1Myk5k3J8rOcFGhmE/Ih\nuFCT73t8CZHAVb9kqKfja3QYE5H07jGy44s8iquZg0tsayeCYw9IJPk3DUeoB7D2UEe/4+muNO8W\nHIzOY6BMoSk+3NRqikpaI1lAaafAVbci7Suf5YC+Brhz1SfE3L89oJTUsq1ZTXmJtdyNokgJvwf1\nW1rqAPO18XS/pLqP+3a/oH+HAT9Pc2fuPfjjK/8ARFG/+HT/AMo/pj8wbGzrs2MxVFjgJEvrKJCn\nHuBTnPrQewGAB9tfhxjVUy2ZApWZ2kElCmn9aRc3ASVXPIPP0PbH9dZLcdNYh1SwSp8suAg2uQEg\nm+3IuD69dwRHsdQJp1hLRquhUQXXECGDv0HOYPugHkAN/EdbEeGfxJrcYUmmVFkpDrQYUVJtqCgg\nXuQL8je/fnF7Ms9dDzPAqbRIYlttBSk8a9Kdzv8AH1Pe2CDWLIm0p0/Tn/ZVqZ63TKbW+jyTsPsJ\nQD8wHzxmGYKZIqcuh5jYJU2hUaQVJ6EbLBN/mdtuthjusQk/pVTK/GOlEpEZ1ahwVHZQuO1ySD09\nBgT1aMdT8BLMidZyNlXKQEAOwJiJxJ2Ee3SICAbDx27a41vPLkKNS6LWGtCX0+yuqVtfUAnUfXjf\nfe/bDHWKuaDnunvqVZqayy4FdPNKAFC9/wBq9+b7n5meAnWkrg2TgHhifXWKLtsJTCAmAW6m/I9+\n3SI67aAf1xzNAmu5xoVVRrVHEiO9qF9IQ+m178Abp42G/a2Bc2nu0vxUjVePcMzVsPFSTsUvpuDt\ncG5UN7He/S5AgJ9pS+POsDHOi3an2GzGDbMwGAR7+OlMB769R7ca5muFDpU+g1hjSlxUplRVtcec\nlN9+xJPPBB2wzxKozTPFF+A5ZAkq1oNwCfaUAEDbf76gel/W+LRXKXjLDy4JHIKYuiQTBQQ7CoCz\nYUhEfID4Jv2/jrHpVRnyPFHLYkKcLEesOskq+55cgFIvckW4569L4znJ1JkUDxolrSlSWpFTmIJs\noJUh8rt04uqw+nU4Cdkk5VXHaaigqGahHtVB2IiT4fU3ER9fTz6b7/PjXMz0KJQ805ZqTGkOCpr0\nkABQcCVKA27nja+56i+GnItShueJ1VpSwlL7cmalNxvqSXRtf0txY72ucW9y24g5Ll/fnQFD4y1b\nZHSEvR1/GMm1MbwHnq6vPbQDv03lj2ZKjXPETJFLf1+UzmQBwG+nR5Uhq9zcEEqH4C+Mh8K6PJo3\njMJQQpIFWmpcO4GhSpHXtYW672A7YBUpapqvY1+AJ1StmkURDsYwFEoNyoF7+NDsO/tsO3jjQfED\nJ0RisZanN6SpyvRnCbb60u+f3H7l+bXHHOHXI86nZl8VJcUpQX3Jz7guASFIdU4bc3IKTYXsfXpb\n+vwdcUwkwXEESqmpbVY59lAwrfZJDmEdB+8Bu3nYevoHCl4l+IkuoNjL6ArXOrsOJbqUmrMpUkD/\nAHk3Pr0xh79Lnjxwl1H3z5WaX1JFjYI+0l2243TuO/wJxXnCl9mKVjJrGoqqpppouXHTsSgAOFVH\nGy9+wiCngPO++/PDF40ZBDtFnTykWKYzSrX2ALTAHrxbGvZ/k0fNPjAtpZQp1U5mJuASpTKUsaSd\njykgfyOLM4SrEXdqCNycKlO5sDuXeKmN3MO3rhIphEdjsQT2IiI+nftwzTvEeHljJxortkuU6gxY\naUHYXRTW0gW+JvY882PGPn/x9plUi+KqKbGK0RqWilMBAuBZEWOsgAbWuSLcc88YG+Cr66xjZMux\nhVNt1b7KnSARHpORugg1KcPAAG0jB27emh7cKVQyZNqnh1lyoshaAMqsOqCQRYvJekk7D/6l9z62\nxsXjMmmZhi+Gcd9SEyouUaRGcCrBSVLKnSk9d9YO+99yN8Fyjsz5ptlnuZlSmPHqMYE+hDqAzVuL\njp8dugHIG12EOoOwhw+eCFcpmU/DCi02oLQh5TE2a6XNisvy3rrJvuVBAAPB0/EYxH+0ZT6hlSk5\nLoVNSsNSoK6mNIIT/eH/AC9exsdYaCTxcDbi2HbGlsVxHnK/Q75TTCQrNUcpdRvugoDue+8G9BsS\nm6TD+G/fhEpkabXKdW65QvMQ3Izbmd1K2rgKaKYKUm6eRqbJAAuOBg5m2lxcyeAfhsiaEmfBqlfa\ndCx72lxulkA3ttdJOwvcEdTieZJmS5vlIAIcQFSmvXhnJyCAmKWUQXKQdh6GBDpIA/MR9uNH/s4z\nW41LzB9urSqYqvVaOFPEavJYlpUhPvXIA8w/M8dDjGeqZN8NclRpkNCkt5np4YCWxZKjAlsugnpd\nJcJ68gC2ByxcvsY5qx24kxP9my8fZWionH7g9DJAQ3vsIlOBTD1aHiDNYCs65lqWXrl0Uyh6i1uC\ntqfUEKB09dKhexuPTjDh4ZuDOPgBn6nVIBMqNPy/LZS4LEpVJlNrKQSNrG1x1v15OecrdGXOolr0\nIJVZYkrCyjcERKY5CM3pBVOGu4aBQNjvsAj7cAfCudOr/iXWmsxrKm6bBhqjIeJKQZaJzKwArgEN\ngepIGwGFDKeXnMiUCoZpjNhuMhqfAfWNgtM6BLbSkkc+8Bbc72ttbAM+yLn/ALV1/wAR+PrT7Jof\nZj/0f0xjf+kdP+yV9D/045DAQ7m7fWTH6UJEuzCICJQE59b3vXYw9vkPoHHy/GmMtZUkUl0Dzooc\nQ2Cd9grSAObnp2x/T6aRJy6w+ybvwVhSCLkqQkggDra1x8frgkswGh2BF2I6ZyKR/iCH7oiYxR77\nDWwNoR3v3Dtxk6CvNNJnU65L0RZSE7lQSAQNhc9Pp644kyU5lobZJPtENTZF7agAON97WBB72G18\nDqxPviXo5WgiVGVIZQAAdAJj6ENa8/e2Ude/YR9dHydAZdybKgTAn2mCkpQT94AIULb9bjsdz3OD\nry3v0TjTEnW7Tnm0qF9Vmxe477c/yscTnFyiNcsslESIAmjJt1F0vidiiJhERAOrQbHvsfn8+EDN\ncqTVMtrjsFS1QV+SUpNyNJuk23sLbfO2/TjOCvt+iUitxTrfguMtrKTdQASLXIueeCLX42xBXDha\nOslkgWpzC2cKuF00yj90wLCJT9Jd6Ht30Ab+fDhRqU1Wckxp7gBlwGUIXq3UC2NSeLkEG979MMlV\nnJTTMt1xwXKVMRnnDykoCSjUe/Q34+NsFTD6DR9SLZX3pS/WWRXRUwN0gJQVRUEohvvruX1/5pHi\nBXJTkOjFtSlNoXFXtfYtOJSoG3pf+PY4X/EAus5yy1mSKSG5SYylKSdjoUlKrkbd+b8XPcDCOmpB\nWmSleKY50Wn1yP0AmEAAgn6NgGu+hLrYe4+nDpVaAymLSczoCQsOQ5ZVbfVrTq37kpUL3w5VKREg\n59pExYSlVQ9mloP7ylgBfO43uCfUHbpYpuxjJ7l0O4AE/rZK6sQTCAdYKtO3f1AdE779tB3DupZy\nzVIk5poMRV9LFeiFViSC28NJNth1G/AvydrZZHjyaF49uy0lYZkVVKiBeym5PO1iNyq/c35OBNKW\n2TdYySaHUOZv9lIFEOoddJUkw8a9OkBDXj599uFayo1RcwUCuISkLRWWVhY2OoqKhf1Ivfj44fKA\nuA14rS4I0JkJnSFAG176lkeo+9vY/MYs1lSHh1sEv3zYEwXNXWLpMwAHUKqiTY4h6DsROID8+4dx\n7rdUzg9Xc35OpGk2/SRDbgJvsEyGyeTtwQdsYt4VQplK8bDIUpelVXntLSb2CCqQNiTtbb5E24wL\n1ciSsLjUjA6qpEG0MRscBEQDQNSpAHnXcRHsGv8AC3nfI6Itey9P0JPmV6M8DYH3kvpfAIt0037W\n2vjQcqppeYfE6W0gNrkqnuvCwBIUh9SyT8ADvzvvYWtYeKpUP/Q80eEMBVlKei7E+w7KDFFV79g0\nO9gPf+WuJfEnxDTPhmhtjU9MrUKIE8myqmykpA5Nxva3A9N8S8mojxwem3UWms0uhKLGxR9oqAvz\nsemwGBxhHKD+m4rjokyhilatlzlAwjopVllVx868gfqHzryPkeBni/kaQuDNnJStKHfZ2za46NNA\nEXNuCngX4366x4hQ6TmnxclAKbU89NbZIBBKlNIQxbqdQKe3oDwQTsVUxK6Vh/cvigY9hkpt91AI\nCIiaQdFAwiHcd9HYA9u/y1eoZ2pVDyQmlPKQhdPy7FiBtVh76KY2kJA26nfv05xh3jgKrA8TotJj\nBQj0tmkRykEgJS3EjKKQNgOTtbk2G4vhDy5ZCUx7IZRiHhhFP9u5YUxMIBv6si3a7L4+7/VCGw89\n/XzklZy/U5GRqBUIXmNt/ovGcVoCgP1wdkgm2x/1gO/fodjrvjnTYGY/9HRJQX28o0hlaTa+pepw\nhQO+o679ztt3nTZq4yzcp+5Mh2kgkxhDmTHf32RVVugdf2frQj/5tfPjU/A2XTaJ4YUqFUFNiU6i\ndOfLlgpS5Eh33lA9SEJ37D0xhvjp7fkylZQy9FCyhxhyohKQdI9pWhsm3QkMgX52vcdVGGLWeg5d\nyTXplQCoKRtWcIfEMHSBzBKnEwb/ALZDl7/r27cITS5yabOqlA1Bl/MeZlAtcFHtEcIVcbAXSbHD\nbn6ix80eCPhfJfSlUtl2utPJUBqILkEJSeSCkp26HfpiZZkkk8ky9TWrwgovWHUiLlRPQiQkggdM\npfujsoHBEddw2IeeHf8As+vJqEDMEyvELlvVadD1PbqLUOWpTY9+xIHmXFyQAdsZHXkS/DTJThbS\npqNmKGyhLaQQHFwZSXOByR5x/Ha9sQKtSj2o5fpradMYWMvF2BA3xhHo6kW7U6X7w62VQO3YdAIa\n78V8yJTR855iqNE3V7BQyoNb6iJVQQ4DpHbftcb83w3ZKWjOvgHnRl1ATIh1ShvNgj3i265MbXYn\ne1u3Xbti6v7R1n+23/RP/HgV/pBzH/s3Pof+jHzl/o7Y/dP1V/THCJnFJqxaUgHZ01TN19u+gHYj\nvyHoYPTyHpvhYqtTWiuKYST7NMXdJB21K252GxuDz9DYffUKYqM7Ipqzdla/1RJ41EkcnexuO9iO\nb7N11nySteEoCP1uONow7AB6RL0mMHroR0bx6j+IlcqUY0jMXnuJHs0617iyLqJNyP8AOwvfBPLz\nQjznYxUAzJSoBP7qjqI+huLgdtxziEMm7l2nFzgAYxmol6zdx0AaEd9x7bD8AA3fXDDXJLVHqUmM\nwQhuYkEAGwJIII2AG1+3PFr4NUiZZNWoEuwK1q8sG3vJKTpUO+xAFuwsb2xP8hvUUWsFZWJilVIi\nCawk7CHUUuwNodh3EQ7+3fhEydEU/XqpSZd/JlOakah7tzcAi+3PYbdd8fsoIcLFWoUi5CVLU0FH\na6SSkp5G3oNuu+IJDOyr3aNknX3kHxUkFTD42bQefGxAQ1v8+HdZXQIVXpCbaSFrQngFJSb7b8X+\nHPXBmQU1bJE6A2f7zAkOOJSfvJLRv/6SOwPTE3mXylGusik1OJWsy2ROUAHRTCCQgb5dyj3DvvXf\nvseEPL1NTmqkvMupCnYT79gRchJUD2Ft9x6HYdMRxHE1zJlPkvgKkUlxSVrULlKdQG999lA9du3T\nGeIY9rOPLbGuQ/rBXVdogOv3VB7DrwIfe1v5eBDsLFmOsqg5QbgqvdpBZsedTR1WFuDYG3B339KP\nibIeQjJldiqJDKGmnFJJP3Sk2JF+LHvt13udULa3cNWLFTjKG+G2XlGgJ67dKp1BTAN+A0YBANaH\nWuAcjLoq0Sn5kQm6kIiSNfNlMaNR2v8Au3v63tvYMtdjxXcx5er50gzWoD2sm13GwgL3OxII4t3t\nvgh12ts53Bqj0uhdJQr5Ee4CYFmqaoa9fAAHsPb32HB3PGbELNLiagHG6pTHDsNkLUhJPzvf+XUZ\ntVX5dG8fWZwJEWRUYiyL2BbkhAJFiNjffob29MROWyC9fYsTiFVTCl9koNzFEe3SmiQo+ohoBKI6\n8eQEOK8jKP2VmKiV/SbNVmO+hRG3vuEgg7WJSq3rfGgUeDAi+KzqE6EyDPecQNgSVKWQbEjc6um3\nY4M2SKrHlws+lG2vijAMnhBDQ7FUjc4gOgHz1Dr0D04sZgza3WcxZTpbZ1FWYUNrHVNm32xxbqB6\n272xjnhSmdTvG91x1avKcqtQYsq/ujU+E2Hba1+DsbjrHf6UH8bjZKKOscE0oQGZ9iOgL9TBHpAf\nHYRAAAP4duAebckqj5hoU9xu6F16LIF72OiUl7e4tf3bnrbrtu/5fptNrHiZKLWhT32k8+Ei1yUy\nC4dr/eABO/x35JO/YJqjicz9JUoKjVive2v3vswFhANevqPz7jr0a/EDPEOfBbpKAFvS6xBiJTtc\nBVRabNvXbjrvsBvjHqc/UV+OHtCypUZOaFoA3uUmolI1cbbbX3564b8EZUWqmK4uLcG0LZBwYvUP\ncoLLrKjv72tD8QRD8Q323tG8XcrTizMkNlxLb5Ybsm4SfcbZsLgWv92/a/XjT/EaiQMy+LE1bakK\nW9JZQoDSSS0020LeoKLbbi3xw9Y8p69piJW2IGDpnpadfEEDdjCaRdFE467DvpDvofQfQA42idXq\nPTMht019TaTAy1FjaFaQQpFLbGkA2OrXvv3+GMf8ZqhUqf4kQKQyHCxTI1Gj7EgNoRDilSQOARqJ\nIHW43uCX7luyCSpt8iRMopoyN4mRTExg/dQI3biQNiHYPhdh152PrxjFahVVjKVFk04uIZVlqK4r\nSSBqcS8/ckW5Cxfa9j1vjSvHigRcwTshPNpQpz9FKO2sWudawp0n/iPmb+nptjByV1eci2q2ROyt\n1E4mNOdMexjMWZh6REBABMArG2AeN68DxsPhEzT4/hlRGahoVKfYmTXysJuXJUhZWTffcIA336jG\nUeME6Zk2h5Py4kL0IjvzUoAsLypAuoD18pIF/wAbXEiwlafsTJGQq9OnHSbStrtwWHwZROSE4h1D\nsBOUxREfOyh8uM4iTJdGpsqbRiosP1/Mtyi+kpblNJQo2NjwU9Lc9yGDxOoLOZvB/wAMZ60AvLFY\nQ+Lb7PRAi4tcFJSQPUn1xIc2PELBO0p7Xek7mFPLguZAe6ZHiRCAAiURAN/B6tj7B6iGnPwTUMzx\ncw1Ste9IenOwR5m/uwpLhTYHfl0gdbc7HfMHHn/DjJFQYCC1ErsaGUpsQHHIUlargbA7PWJ7Hc83\ni/1yz/7Vf/iN/jxsH6MUP/ZM/RvGNfp4j9xX1H/Rij7ybTh1RamEoJLAdI5d9hAxdAYPcdD+Q/gO\n/maFSV1eO1KsfMYWCb/eBCtx8Pn34x9rLAcWHwdJ91YUNwFA3IO3Fx36WvgVomWdTL1iPUZNx1AX\nYiJTAbsA69NlEPzDwA8aTNUyijMvjSl+IEknYKsnk356b9t8G3XFMCDVGraUrQJCd/dN91fXf59c\nFKnt0W7B3DPgIUyqagJAYPvCYAMUQKBtDvuUwa8h31rjJ8zS3qh7NNYUVKjuo1EH9m4JvuSeoPTc\n45rD5FQi1WPaxKA6UjYpJSbm23p88C+ekF1m8hCGExvhG/qSiIiPUURDQF8j1a7aAfPYONCp1LQ2\nxArzOzg0B61gRuDcW5IPf1w2w5TUKrU6WqyWp3uqULAXVYe92+Z6HqBh/jowjylllGwgD6LUSOIF\nHZg+EJDDrQ9QD0iG+/YOkQ8913M1XC8wxdf+rlp8lZ2sokFO/HHP8+p/RJH2bmqTBcv7FVg4Ug7N\nlToKTa+xN9+vXfDNcbEWcdVx+ocoHIui1VOc2hE3YhSdxABEwiJSlDuYRAAAR4K5SgHLtQlFQszK\nQpYB+6rWOfU8EWufntg7QoAjxMw0fkLjvvNpAPFtRVbsBZV7DTvfqcTiKXUodrjZEBErSWjlSHMG\nwIcRADp7Hv8A6o6D8PQd8K1baTXFVSA1YluT5rYHQK2Vba2/NyOh24wuwAcx5Pl05665VImJ0gm6\nkpSog2vvwAT1t88IIZmnZLvaWqIhp0QjxIoeBMIGMfp/Iw7+Qb7cNtCfTTcnuU+Vs400+0ArYj3f\nc+BulO3qBjzPEl+HkzLM9rUXKfLSy4U8hIIFj23A2vcYmVOtpq3XrTTnQj/UP5RJMhhAOlNyQRDQ\ne2jD29/A8ZvVqO9WhCqbJKkpajrVa9tcZYtxyRoFyNrC2+LeYYLdVqWV8zoteTDp61r7uM6Qbnv7\nu/J+GEMPVQmcTOJNLZjpR0gAgHcQO1FUBKIa7D0gAh/Dv341XMtfjmkQ2FFPmtyaYq3XdTYUe9ub\n/wARbCxX6pJpXjvTHUlQiPyqepSrm1n0tgnpsSevr83OWyOu/wATJQih9gMI2aCOx7gkkmAAOx1o\nAIGt+RDQ+3CGrLLkLNNIrKgfLZrLMkXBIst65IPqFW6EA/R4pVDiw/FJ19ISl01F54Db9ta1CwHH\n3j+SDiT5Cp6bXFLmVQMAmCKZui6EPvFW+rj09u/YFA/Dv379nLM2ZY1Uq2WYDSgpxVbSggWumzb4\nHxuQPpf4ZR4Uy50bxtfEgn2ZdRqTIJvynz7Ej5Dt8hhyXym4b40CJUVDQwH1AwiI7APqPwCh3Ht/\nZ36gGt8IVbym8zmahy3Ur8r7eiSSkg6VBExDyjbe9tJO/r2Aw70CgwZ/iRIkMhKnUVVcqyebplea\nSflvfji/G7onQ1mOMzyaJwAQroPQ12EAGP8AjCAa0Ow7j38Dr37aB4i5pps+EzTkaFPSaxBjJSLE\n3VOQg/K223fjoM1o9Smu+NoL2oxhmJbRUSSFJM4oAIvsLC29/n1kmCcnI1/GETHuhATtknehEwbH\n4zpwtsQ2I/6+/wA/YOMy8U6PVAiYppbiGXksM6Rq0gKZbZNrcAgEeh26YePEzLEfMHinNfaCSp59\nhJAAVYtMNN2HN90EbftDtvhqqFckJhjNWRmBgRmpaaflEm/vmVkHICPYQD0AN+wAHoPG3z5NHh5A\nagvFkLhZbisHUU6gpFNbtzyST67npjOPFeuToHiLSaMkuFqmx6NEHJCEIiRrg8AWuSQbWvzbEs5c\nLu1jYu5MpZQPjJ26U6TqDsfhokRbgn38AUUh157bDxxkddeq1Jy7SjTitLAoEZWlOoJBWHHb7bDV\nrHxt3vh58fsssVqsZRdaQlVsuUtKkhIP6xYW6pW9xdRXv8jthlkHDqcyfbp+DE31ZVKHZmUTEekR\nZsRNoRL4Hawj535347aX4XUyE54a0b7TKVSpQqc10rtcKlzHFK+9v+yN7HoR2wieJ1TfyplbJWXX\nE2DLEqShHrJlKvYHYizYva/wxMMNWZNa73aEnT7OzbQqrcFh7gKxXhlgL1m2GwEvj09O/CRS6k9l\nemPvU4KUw/Wq/fR90+XJbSg7dDYi4/paz4q5aZr/AIW+HdQQ2AZKKl5wSP3VsBBNv+Ej62xaH63X\nv7Tf/jL/AI8CP9KlY/3vof64+av9GzX/AMOfof8ApxxLmZNWYbpOUjiKiB+lTQ9xABHpEdeofn2/\nhqFNZao7jjDgs24Cd9hudzc2vf4fQ74+uYLQLj0Z0aUuJAH+6oAHb0sL7jjbriTQrE51GUkAfe6S\nlP28HLoQ38hANBv04V6vUtD78K90LJ0i5spKrj8L9eDb0xIl3REk09w3UhRsD+2ncBXYbWNrXuOe\ncXIxJJY6aVTIo32YqDRtZ3mP4aAhrFYDQ6MtaK2rbrdFEsKjBw1l4HHis82rETcbYV5EMWrKUPHj\nLtFVHDhj7kSnxXV1aDUjHUzMchojsvu6VOONKkSBrSlSXURA4GUPvgtosvy0uJVcpznMBrj8ijt0\nmPUnXaW1WpUqVDie0KjwJqKdTnjEDyHI0qsJiLnSKZT/ACpDrjkcPezLQEIdmkax5Q2E3ZLJESMM\no8/ZnKcHXq5DZEKxmrQD2yR8XJWpvcJa3NGkM0/YmwzldxzS52NjrVKsqlMWRmyyOjbolNHTXFUe\nkU2dESUgNtTUsMIlpQ44CspDiH3HgGv1Di2o7DgDziY61pTK85OBjsrxFq1IgRH2ZVotToMyVPkU\ncuxqcpiBIfZpy6bGpy3pLiqtCiTK3VIz79OjuVKLCecoiqdILi6mWfD1fw9X4O9zFGmUnWLICvjS\npGXfx8mtecYDzfXdujY42DcRc/FV2ZnbniJlFP0pVija1ZxCux75RWPmSRmeRVUytUiI4+uLJeis\nshyGtxxDom0r9JpDYfQytp9thx6ZTShaXEJkeaGUqJS6GylRj5mqNedqtIjVeK5HzHMnLrDEZl5h\nFIr48MqQtUGRMbkwpE6LFpWZnZDCozy6cmIuc+yEvxjJXSGO+UuvsSyMe7qMJE2yNyc+pU3GZBtz\nmfslff3PmPpMhHSzFzNPGzOhsoWuY0ialKhHtH07MfaLR5KTi7mdKz0eomhR6ZFkKcYZSWpKWHEP\nu+Y4ytVQjlC7rJDOluOhpR95agUqWsldv36TeJT1ZiuvIqUp+KvLsSrxZFGpqIMOcxRsj1hh5h5u\nK2Xaw9LnVyTUI5dcaiMFlbUeIhuIXJC/q3J/kOnW+eaNauygqjBSczZXUHab6tIY9qsDfFa5G2Ki\nldzMoM1LS0EZm/tbOwftGoQZCCkIeHZDMpNTJlHp2XxmCfLZbjpbdY85/RImL9mZadcbbfiJcdWl\n1b4LSpiXi9p1MrZbaD1jPTp/ifluvw6cp2ouzK5LjRYLMym0VEevVKdQxPkQawW4kcRI0ad5rFMd\ngfZ4PkTWZUtwRVuCvltaYTqcTDT9cTxtH3yRvJY1Vrjm6z1qbiwPNZZbzzACSVhn2amP42mx+EJa\nk2cVPtSfsdkuSbqSeOk5mFrHmfY8BulTG6eYrcwrbdS3GfW6SA5MEhJQpbiRGQymAph0AKcddfBW\nshaGmagyM3V9FdoFTcrsikU6muSh9u0qFT3ESQxlp2A8PZ4MN9Nbk1J/NserwADFiQYNLU0wygRp\nVQq1Y24vb/OosTAJXrMj0oJ9wMYBApxAA9wMPz7D39eA/h8ltygPRpgGttbzadQ3AUFEc+pHGxvj\nQqnMcgeHFMlm4cpc0Mk8FLd9ueB1+Jt8Z7jiwoxdMtNYfH6VGzt+kmmbv/Vu2wGAAAfAdRx7j28+\nO3CHmaPKkyYy2Lqa0N6wL2C47xGr1ICBb/PFTMcIViq5UzOyNRkwqc4tY6OsOAEk7b+7uLgnnjA9\nZV1eQx4tIpdRiJMXphAB2IfVjrFH3D7oFD5+PQONhrU2KaFFUdIfaep6gdgoFRbCrnnck39RjitZ\nhdpfjdSY9yGZb1PJJ+4Q+hAN9upNzzbjpgjT+QySWJUIk5wFRSFYtVBES+USIhrQd97IG/w7+usr\nYosljN1KqDtywzWUPpFiQAp1W9ybAWV6c7DrhgomXWoPie9LQNKhUZTyQBvdwum4PJFlX67nDfkK\nprRtAXkSdyAiyOPbQdC5kQDQjrto4APYN79eNLzJV4c6dl6M1oLyqgoAAgkaGXVb23F1IuOnB6YQ\nvCOrS1eME5iRr8ov1NCSq+kqbS8U87CwTdPfm18EJ1kwCYyNFnMAKHrpmIDsO3+gfC8CIDv0+fft\nvjJ6rl+T+lVGcd1mOquxX1JN7FKJrbt9+m1/T4g4aKFlqPK8RHJrRBLdXVKVbkkSw4enHyJPr0i7\nepyMbj8ZNPZUywgPCgA+Ci0BXYgAhr1H3DYiPrxrPiJVKVLgsxUFsvu1SJHQE2KrmSls9b2tsOnH\nrhQo1bly/Gr2d9S1MqrzrB1G6Sn2pSABzb3Raw26c74LuFsgsY3F0Q0eiAKoIOgMJh0JhVcrqgbv\nv7oif17fr3x7xHZqzapbDK1iO/5LOkE20lhDZHQfAdNhbrgz4k5VRWPFCdIZCVFyQztYHT5TLKAk\ndbDRyNr/ACwKanGyarWZl2RVAbyUtMPg+GA9JxUfudiAh57FAA7aAPTYaDdq7EpTeSksOlvzYlAj\no1EpuFNwGyLj43GF7xJzRIi+INNo6yVNwmaXDSk7gIRFjbE9Nyb/AD22wSeXizMTRttLKmILn9pH\nQAZXQm+EgggiQNj56RTMGu38B4yisVWpUChUlmDrSwmjNkhHALi3XDYA9Qobj487YYPH7K7dTq2V\nS00FtoocMaRY2cdW46rYX5Kxt/MDEVkH64ZRuUrCCPwFixLcTJb6RFuwIY3jWxE6ptgOvAAHDx4f\nURipeHdKeqBBkSTVJR12NjImvKHPokdfx5BZ9qpy7k3I1BkoA8mPLeCVW2D01aQm1thZsW2NuvW8\ng/aef/2q36m4TP0ahf8A0/x/rhR+1oP+xH/J/hil8IwOi5cIK/eRVMIbHuBREREo7+fgfQfH4M1Y\nqRkxUOtH9Y1ubHcpFr9+Ph/TGhy3G2wxITsvSNVuVDck2B54/HpfBIarosEioHECFOAFD/dPrRRD\nehAPb8hHfCoppyohD6QS42Rc2N9Nxfm3+FrYBy1q9oD6TcK35sFDkg9fyBgey0uo4VfR5jj0nHqK\nAGHZVCbADa2Ib9BH+7jR6fAbYZjzk2DiAkOGw3HPTc27dO5xO04Iz8aQB+rdUElXQFROx9Cdhe3a\n1zbDnWI87hmm6ARBZoIiICJtiQR7j22I+A342JQ86HhezRVAp1NvurslVienG3+92vue2CRcTT5z\njWwjz0JWRyEvAc2494E787/RbeZMruOauEz9LhoYEVSgYQNodfe870OxANediHrxXyhEMWpr8xJM\naWNab/dOoWV2sRe+/Tfi9r9CbDK50BX3H0Lcav8A7wPF+xsSefXDVS3rlGabJyLhyszcIHaNiOF1\n1UWyK6izgUWiapzJtUTOnK7k6KBU0jOXLhwYhll1Tnu5wCkR34rKlWaBW2kqvZIJWABe1tySBbe5\nPJvI4oVGguJCG0zKbIUtxSW0IccWzpQlxwpSFOqDSENpWsqUG20IB0oQA3TczNRSNmpzSXlW8HKO\nEHr6IbyT5CJkl49Y6scvIxiTgrGQWj1FjqMFnjddRkoqodsZIxzCMuXWVzaQiQFrStsIU62laghw\ntXKVLQFBC1I94pK0koJOg84bA7ELVAzI5HjqlRdMX2pbDS5EZuQlLb6WZC0F5lDwADyW1oDoCQ4F\nAWElVOV9jxhKIj/p0K7TE4gI9YdHgR86HuIb9d9xEPK/NmKXXmYrxKmnmwgdQQo7g3569B02xUgN\nph55mt2/utaiqHoSsAg2O2xAPHfjCOnTQmvME9dmAyT1uVkoY+9CC2xTAfTYiIh6enbe+DlTjqok\nJ9yONIUgvAJtvptqFgdtj3vjmuRm5uXcz0EAeZEcEpCBudKTuQm5JHwtb64frimqwuk02ZCJUnrJ\nJ6BSiIAIlKCZx0HoG/P/AF4pZLbZrMN8PgFaH3UoJH7xKki1u5HWw9DgZCl+yeHVPku2K6VLMfUr\nkNlRUPpv87YnGM5NsbHdhhnYlBZovKoAU+t9DpEypdfiKmvzDxvhazVKltSm4jZV5J8g2F7BTD1j\nf5Iv8u2+BWa4aanmXKmZmN/aIlMfCwLgLZcSlVzY8aduu3fAmNGvFaMV4QDCimyVU3/qgCJzkN6g\nPYSeQ+W9calUUxFUqNISEpfbehkq/auooJ36bqvv3t3wbn5lMDxoptNUbNy341wfu/3hsAfHdXb4\nAXwYrpdW0ti9tHgICsuwikzhsP3kjNRNrvsd9Aj4EA4y+mQpac3Up+QVFhmpqULk2CVl1Ive21l/\nzF+suVMu/ZviNLmJFtMmorSQNz5qJAtvtb3uTz19YfeoJ7FVA7rZgTAWqY632KscpQD00AgPj8vP\nGjZjkQpVSoSGAjzlSHVDTYE6GisEgDopH4X+K94PV1+Z4mVONIKvLSmolOrca2tagUk8kaPwwWHV\n8bDi48cIAC560LQN+QH6h8LuAj5EP477eB4yiqU2a5mmlJeWr2dVdjPEEm2lE1Dh24sNz27YLULL\naHPEhc9ohQbrRkk9R/e9ZPp24tY2AwPQjJSHopniZVCIIxn1kmgHpApkAVA3b02YRD5j541XPaaX\nJjxGm/L852pR2BuCpV3NJHW5t27fUdQa89VPGJUKQSptVVeZVqB+6l5aBvwbAWsCb27XODViK1Ri\nONopJ4YgOEm7oVBHuY5lHDhQRAR0ICImEdj37iHcB4yzxBl1VszIbSnBGeQ0wBc2CSw2gA/ACw6W\nI7Yg8RMsKqPiZPlMoCgqSyUG33A2y0m224tp36/AjAXqH2i2QmHjIpyt30pKOwEgGAv3nq5Q1r7u\ngAgAHt4HsGh1qu0aArKLRcKfOjUSODq07FMRC7b78qO/N++JfEXM6ms8UykPDUIjNMi2VfgR2Dfj\nYEqO2w54vgnYLk2Mo2tTiT6DuxnTkAVP3vhotUUg7iI9gEo77hodfhwhz67Ny3QaXEi6ksopZKdP\nCVOOurOwtc++N/jucSePWXEzallVttGppqkskBN9luvuO9j0WBvv9cG3df8Adt+ocZH+lFV/fe/5\nlYzr9En/APYuf8hxz5K7TSTOY2gMTQHEB772PSb+HcfQR1xsbUVwSSjctrJIB4Nz7wueduBbf6YZ\nC95zflnmx0XtcK6i29ufXa2GOYnjLNepIw9SZgIoAD30Ah0m0A+B9/HpvhnpVMTFeUlaQUrBUL8f\nC/pva+1jzttEyyp1RZXtcHTvslW17dr87n64Z2wmdu2zzuYVOkqgj662Ud997EP17cEZcpMZpyKC\nANKtHAsDxa/x72v8cXY8cqjSY7wstu+m/IUDqSpO/ANj/O2CvGCnEkE/b4By9RhEP/VmDY9u29Ds\ndeddtcZy+F1BxxhQJWkkpBv95PFutyLb8HpccU5LqpjDat/Nj2SedWpHbe+43H+OBpY3BlXzxumb\nrIcnWUN9jAGjEH2EQLrf6hoeNGocdP2Y0txOl5i9lWsdtlDv/j64JGYWBTqgjhDiWnwP3FkJN/ge\n+3O+wxJ2iAL1hF8loHccdMwiHYRIXQlH0HWu2/lr34S6nLU5WG23TqadJaP47H/AdbjffBKK4Itc\ncbP/AGeptqCk7aS4Rza5F+O1784hyr9OTsTFVbsDpMUFREQ/eNom9j52IAPrsQ3692uHHVR4jwRs\n0tJWkd0kX7DjqNvnhgKQaPVqSlX6yN+uZA/c+8hSe25Avv8A0kSjo8InYK+sIgk6IVZEO4AImT/e\nD00IgA+3n14UvZBUpMaY1uthfvWG+yzsSdztfr6G2JoK/bIlFq9x50Ihl5R+8NC9B1DkWH+Nt8J2\nLbqqUfPNh/r4p2j8QQ2JigksBijsNCH3BEP0D5cGavLEjyoLttSkuNgHrrRb16jf+B2xC+4Ws+OM\nKN4tYpzjVr3SpakG3S179bHsDfbEojJxKdvUOo5EDEesHDMwj3ATCXqJvv53oA8d/wAw4p02OrLs\nVx5N0tl1Dhvce6LXNr7DqbfS4OKlcp+jJ2ZKS3cLZWiQlIJuE8ahvfbYkdhzjVLquK5ZLDGtxMVF\nymi8AhdgA/ERBMf0ENdtB764mgwmcwFx0BKih11IJF9tZcA9L3/HbsKtDeSjINDmSgC5THlwlqPI\nSl0qSd9he/pbffc4m9KWavsVyjVXp+O0TmmglHyAD1rJ73sQ317ANBvt+YauVV+M+im2OhTkRwHf\n9h1II5/3Sd+/XAnNMASfETLOYmSVJcapElCxwbaUrsvYbFKrH5cYEcgR2FTarfeFEGzdUBHYl0Bi\nF3vxrYD27+o6134fpkKMiFGmt6Q6mSzc2BN1Am/fnfYdul8N7GYm4/i4KOTYSHXBbrdbS1b/AF+l\n7Xwbcg2dpK0BmyIICsv9jgcA7j9xVv1/j38/x4zakImOZspi5KiWGZMgAqO1ltupBNztsR0PS2KO\nRsvml54qEwJA0pqu45OtqQEk8E3uN+w64HluYv4muFMcDlTMKTffcA6Th0AHftsQ9P7/AC+V9uE7\nVKQWNPmlxxwhNrktpCwTsDyOfS574q+ENdcqmeqsy+SpLSJbqbk3u04FXB9CNvTfnfBinLYwWxYs\nx+6C56+RsACH+sDUhREBAd77bHYeB88Zs+1PfzVSGnlKMcVplw3JOwkX43Fhfc3+uJcs5fKPElVR\nSLhuruSCtNr7yFnkcbm2/wDPYXoDIw1TFRMFCIos/iF0BgDpMUTgAD2Dv1b8a9R40PO9Pp7yYhSU\nF12a00RsSom4v1O1reva245oVcNY8UHIT4BSqa62Sf8AdUpIJuSf2ee3XsZsWScSOPWH1r4QOCpP\nBW6gADidR04P5EREdgbXjt+e+EHO9YqbQlU9pTnkuNNMpte2kMNpAuNtikbdehtgP4h5dXN8SZUt\ntBVpfjFpQFwA2wykHuLaSefhffAdprt5GISyzTrKk9kHzgBKAgXpFdUhdD4ENFAN/h6caDX6FHey\n0y64U+axTGQRtfaOhaud73JPrcj4nPEDMbSs302lPpCvZW4Eff8A+00tR+qibfHC39s5L/bqfqP+\nPGQfo+z+5+B/rjWPsWH+4P8Al/xwBFpNwR0oisRQEz9RTGFNQC6EdAYTaApQ799iGh79ta42dEdj\nywtC2ypG9gpBNxzYBRUbbcXvYD4fPqae+tnzww8ixBWVsOpCSLWUVKQLW6lRta3N9kTcFSOzt1fv\nJLdg34Hf7ohsB16b7jsdaDiR+UhUbW3stroLk2A3HTcevfnuQMdHlsygLLRYOc7gHc7cm/O3F+2C\nLWICSeEXIwiZSSBucpjDHRkjIigY3UJAW+pNlwSFUCHFP4gl+IJDCQDdBtKs+Q9MSHGUuuLQAFht\nCl7Hi+gG1rbcbdTY4pVOaxFfbdXIjspeb0K859pnWLXuA44nVYkBRAOkKsbXGJRJRVlBmu3CsWr4\nhEjHT/7sz/cofvEDUcPcPIfh8+0tLpsgyY8ksPWKglY8l0e9Yc3QLX436HnAJE+C1J/7dB8t4WNp\nsSwVa+4D3W/Y+npAWVdtbh6yUUqlrOXqBM4jV7B3T7gID1RoeAH8PGu2+HWcHIkdwstOp1i9ktuG\nx67JR8+Ob/DFiLLgqE6C7OgaDdxkmbEPuK3skl+3uq277YIitdssORZsFXtJmrtExQAKxPiAdRRE\nviOENgPuPtxnrUKRUn1KDD/mtOBxP6l0fdNzYlFt+bfh3tx6lEfisvmoQPPgOAm86ICUoIB/78XJ\nSBuL3O9+LDBrTbaqZRylVbUJmLg5g/7sWAPuCImKIbjQEdCGthv8PIC+Tis0xDK2XQ4EAD9U4T92\nx/Y6c9+pHGGCRWqe3V6fKTUIHkT4/s79p8O3vAaCQHvUp3684k1rgbPIKwj9OrWoTuEEkHABV7Bv\nqAvwzAb/AOzdgIb2Aj8/nwq5ZjPxZUpt1h4tlZUkll0CyiTcXQO5F7/HfBmjTIDEas05VRp9klx1\ni9QhW3uoWJkb3Pb14tbC+pwFoRh7HAOqtaS/EQFdEpqxPgAnADdiiMboR3oNeo9/wqZkhyU1GI+w\ny+pCXrHSy6dtQI3CD0J62555IxVShSzQqsJ8APRJHsrx9uiah5S9OojzxsUi574Yoqr29inCzxKv\na9sXpCH1WbABg+GuBRESjGgYNkMG/QQ3oeGSptqmUhbAYd8zQof6l251NEg7JF9xt/DF6rVinHNL\ntOM+nmPV6Y8i4nw9HmBrWi6vPKQbgixNwTf0wRnkFPWG7ImGsWjoeQq6fUNZn+n4iIgoXZhjunqA\nA9e+x7BsOAWVW5dJaUXWHwFSE7qZduQoEbjTfpbj48YBVd2LEyBWoTdQp/msSkuNpTPhlR1IVuAH\n9R3HQfgRiPpxNxgFbHCJ1m1AgdwZUALWp8SiVdApe3THCHfWu2/TfgeJ5NGNVlqkpjvEoUsWLLgv\npWpQsCjgXvt9OMXKJU6ZKyplWpy6hA86K0mMsrnQ9aVMuqKbgvhQuOL+lsS9tVJ5/iMTjV7N9Ybx\njlLoNWp4FPiNlziUen7NA47AA0IBsQ/LiKVUZKH26cWJBHtcZX+oeKSk266LHn/LbAWoCH/phpda\nbqMAtKehOFYnxNGh1pP7Xn2B943B+GBvKV65FiWInq9sFMpmRwKFYsA6DqIcA6Qjvw8h7dx4YJlJ\nEdEWY0y55hdN7NOE3KTvfSSDzv0Pww9UXNdKV4hVGk+309OpE0BZnRNBPlrt7/n6dweQdzccg4Me\nSWM1JVNi1Qq9nOqu6jDGKWszwmKAHJ1dgjh150I+waHhJojVSk5ngKlNSfJYMlAKmndNihQ5KLdB\n337jYAvDuHBo+Z6tNE+nItEqdiahCTqKmnCm59osfeAta5v+I2slauzKETSPV7X0HEqHSWsz4gBR\nIYNdIRw9tAAeO2gD305VimtJq9NdYZdKtSntmnDZSFNqvcJ23O1/XjF3wqzRBqmZqz7ROgIDLbjy\nFOTojYJS8DYFbyQTueN97WBwX55hKK42Wbp1ey/WRhUkwKFZnesFAQIXYB9nbEfw2Pr3HhAfFWlZ\nkp0d9qSWRVW1G7L2jT5xG50WGyhvfYWN8DsrxYTHiH9oe305KRU3XVOfaEIApLqzuov2Ox29NhgW\nR8TdomugROsWsqaaAn1+zNg2PXs2tfZ++4m7+4/gIA65uoLaww4lpxa3H0IIS04eEnsk2FgN/Q29\nClMzNTKx4gvRHZlOA9odR5qp0QI9wKT98v6eEgixt1GDNjuryK9HZKOaxYiuRQcmXA9bnCqdQrrn\n7lNHb8CGu3f2791HNlZqzSJNPajyi2pptlBRHfIt5LaQLhGw237W78p+fYsOV4iyJrc+CoNyYym1\nJnxFJshplIN0vkEXBF+O+wGBj+y85/7MWf8A+F7D/wDTuLf2ZM/2D3/lOf0xuv2tG/8AmNM//JwP\n/wCRhRbiCrW59PY/fYLl/D+sIP4en+e3CTRVBur05y33Jbaj67KG+3qcfRHiKr/3DzVckj7Ek3HP\n7TWASgkUxSCqOzpABRN66APumH5dtfmA6Dvxo7i3G3jouWnNxtdIBtcfHbp8txbHwZ7V7rrBNrkl\nIuPiefToOl/S1lsCYS5lM6OrJGct+O8m5BkK42jXlsb43XcNgikH53qUOvNLkmIZoQHyjKRTjiLr\nqqqmbOyt0/uq7u0igVaoPvJpkaXISlKVvCMVJCEuFYQXCHEJ3KVhFyeFEbDCBmrNmTcuMRjnKsUS\nktyXHmqeusJQvzlNBtT6IyVRpDh8oOsl4pSlAC29at04FmV0864nuz2iZQRy7jm6RIIBL1G5yV1r\ns7Hg7R+M1VWj5B+iodo+QEHDF83Fdg/bj8dm6XTATAzsQ5lODsSZ7Ww+1YqbfW8hwAi6FaVqvYi1\nlXKVbWJHFqjKy5mWlN1GhKoFWhLKlRp9OZp0qK8plRC0h1ppSQtCgUOtr0uNKGlxCFWGI/XrVcFf\njEPc7kByHBVIRt9mDXT3MUdy3YNb3sdBrfrwv1qoyACkPv8A3SCA87vtzcLvz8bYYXafTm2ostNN\npt7FDg+zoXCvdIN4/INt+b7ckYMUFA5xy1BZFfY9kbnYkMPY5mMuZBXb394wCv43r7uPYzFlOElZ\nGKkkiydyjBIWMQWQllvrHxGzFZNNVQkeWIlTlSnZLCpDzLEVyVKJlK0tMtKSlbhDjo1C7iRpQFLN\n7hJAJwKlT8rZcnU2PWGaZE/SqpMUGjpXSWnhLrUpt1xiECxCdDCnW2XFedILMdJRpW6lRSFB6n3S\n4kk3Ldzc7kZJ6kJSddvspih1lESiAjLCG+vt2HYefHm3mp99tpDjD7wsdwl90cDcbLHT42sbYItQ\nIT0F1g06nedTpKlIUKdBuWtepB/7PcgAWN7jbDFMXm7NV1Gn7Z3PpZvCCGrfZgECCfQbH7V3rfne\nwEPTtxJSvNkwTID7/meSSf1z17p/8dj1/HD2Y9IZTAnGmUry5iBHeH2ZAIClgAE/qAAdXXnn5SSe\nu9xaHipNvc7iCcgzKRQAt1k6Pih2NsPtXX7359xH0DgPEkvTJLsZ1+QVMuEbvPD3Rx+38DvfYDvi\nOgUamFNYhLplMu1JXIZ1U2CbBQJFiY/oLWJA/hIsdzORrtHvKZAzuQZ60S8wzjK7CxVjtb+Yl5iX\ndpMYuLi2aEmdy7fyD9ZBmzaolMdddYiZS7Nx+qj06NU4kVp2U4ZbjTLbTbr61uuLKUNtoSlepS1K\nWEpA3Kjta+BOYGaHGmUjMMmLRocGnpdcqEqRCp7EWNHhoUuU/JcUwG22WWErddW4QEoSpR9SPlrG\nvMrysZKp1Tzg/n6raZCMTllIJnmKLuriPZKyDyHcM589Iu1kZwE6zkWDtq/rsyuzmmR0utZkVJRJ\nU5/MVLqVMpTrb6nWJiW/NLaJoeWjSSNK1R5DoaWlSVJW2shYO5AFjgXSM15B8QmqqcptQqjSpLLz\nLE13LEikofkMMNykuQk1akQHpcR1l1txmdFQ5EeSqyHCsKSILM2e1ylulCN7lbwIpEJLlKS22QoC\ndI/QfRSyoBvoHY6AB7+fYLlKoyENo9pefPmPLRdbzpNlJ2HvL7335x+rFPhUzw5eLVMpweizlFKv\ns6Fr0my/vCPqtyeSB2xHmuSrswr8zBnuNw2m5fJ9RrZYzHKVQTCAAcZTqDz26TBryAaDiGXDkSKo\nZKJEnSlSFBKZD4SSgg7AOW5G/PrhppNNo82HlWuPU2l6nYUELvTYIC3GQEqJHkWJNt9QJv3PErmb\nLaV8cs5BO428FBYRphMW3WQDAdNQiag9QSvVvQDvYj6iPpxO5XHnXo8AvP6ky1AjzXAbEKsD73G/\nrtvfnC3TKBEZ8ZnZZp1OVFcdfT5Rp8ItWWwog+WWS3sCDe3PG/EJlb5eSpRpFLlcQIRw13/3ushR\nECnIfQiEoAjsCj58h78X5MZ6GuNKRIkXX5hB894gEpIsQVkbXv6/Q4eMrroUzNFepaaVSS41Em2H\n2ZT1WsCj3QY2xAVfYc2PU4JuSL3YXUHFoNLhbCqrv2gGFK2WIhukxDFENllAHQiIbDxvQjvtwsUS\nbUZmYGPaZEny22H0gKfdCehuQV2JATcXud+dsA/DvLMClVKvS3KXTiEU6cqzlPhOJ1JAcSQFsKCb\nEXukXAJ4scD2dvd7bRJED3G5FKcAQAf2tsYG/dENAb7U2OgL5377HfDDUmFM1eG41IfJCvNID71t\nnEHcBdjuQLHbfcEcFvDX7IrNYqi3KRSz7OC6L0yAof64DYGPYXvyPobYJk3c5wcenOlcLYDoYtvo\nxbbYgU+ICaQD94JQDAO97EBEfn34VpNXqsuvQojkiT5QqG4DzwBTrUAVaVgHYja3pgTlnLUJvxBX\nKNLpymzPfUpKqfBUjQpblhoMfRaxHAF+fhBYzJd6i4AE/wBsbj0ERMbrG2WMxh6tjrqGTERABMGh\n38g78Hcz0x3Wy6JL4LjqEgJkPpsQnbYLF+L7bfIYMRGKFWc7vxBSaXqDzidIp0DSS2kjYCOB+zuB\nbcXxFf6SLp/7ZXL/AOLrL/8AVOCHmvf7Z/8A893/AK8a7+jtI/8AlVI//E07/wDiYKttUBKuzyg6\n0RisI77f65A4x+io11anI396UgbfBXbGxeJhUPDzN5TfUKDJItzfzGMVoUlgTV6B2HUPTvt3Kbeh\nAfUQ338a0PGwogpU2Dzp3HWxFhv8T+HrbH8/VIccu6LggG9r9Cbnqbem9xa5GOtf0f8ARsiZc5Jv\npWce4vqFov1+nqTygJV2qU2OdS1kmDM89S0nIljI9mIOHH1WIYvn7voMBUmDVysqJUUziD1l+I6/\nQszMw2HX33GaToZZSVur8ucpaglA32SlSiLW0gk8HGFeKlSpdB8R/Ays1ufCpdLj1PPplz6i6iPD\nYCssR2WlPvOXQjW88203cXLi0JQCpQAsPkHAkJzGX/kc5Hs43adU5tsW8i2bIO1Pq/aYC0S8HmiL\ne2DKuA8C5In36NhbybyvUSHl4axREZJGm41zJRrJnLoqvfiL35kVufJo1FlvrFVZok9twtuNuLRN\nR5kuBAkrIcClIYQtDiEK8xClISlQKhhfouZpWS6b4k+KWWqVEHh9XfE/LT0FuZBlwY8rLb6IdDzV\nmqjRWlw1sty6nJZkQpL7IivoZfdcjKS1pQGOSblxwVGuPo7MrZyaX6xTHNBzWWOlROOIk1EVqLip\n44tFGqMRJ3KGtcG+dytZmMozbqCu7FJ71S1TZSEfBtUJcizsybSaXTFyMpzaqJT6q1XX47cNv2Yx\nzHhvRmG1yWn2lKcYXNdU1JQFWcYSpDYCwo4bfE3OWaVI8ZMtZYcpEOLkjIsWqv1iSKoKgioViDU6\nhJZpsiDKabjzo9EjIlUtwtWYnuMvSlqjkN4tDjWK5bXXNR9LzWai8yljXGTTky5t4nLEnYoyi2Z/\nASkZzAQje0r4jqtMTrUaNUbRTZBlQ63ZHSMkk8+rtZiQSjwEyTlRI9Mbqub2YyZcWKIVWTKVIEZZ\nQsVH9aYbcZLaExggJTGacIcTYJcUBYjN8w1DOKfD3wCnz0USr1xvxEyM/QmYTtUhpksOZTkOQkV+\nZUVzHjUHH1Kcqc2GgsLbKlx2lO803sXIvjbJK3IfZeT6z5HCj87Fpt2OYeMz2nVnV7xjeca3FlW7\n2vaHeOWTGvzVeZRbpe1tfsVA6os45wyI+WO7SKyVa7QWZk3LrVLffVFzHJkw225wbU9Dlw3kNSlL\nMdIQtkNLL6dA1BKFJCzqGnTaF4p1WhHxQR4gwaP9o+HdLg1mU7lUzkUyuUut0x2bSUQ0Vdx2XGmO\nSG00932lYT5r6XS0kNqLsAzfyv8ALfZcM5uzTypXjMllLyw5Vq2J83R2X4+ioNbbE3iRnK5TM1Yz\nUpiLNzBVeXudcfwbqlWkkpMx7F1HShpgFPiN3Vo0qm02kzJlIfnOsUyU3Em+3Jj2ebkKWy1Oi+Ql\nPlsuPIKSw6FuJSUqLl7gn6Jn3OjVXoGSs/0rLcBzONCm5jyo9l16qKepsmlsxKhUMs1wVJTiJc2P\nTZjclqqQPIjOvNSI4jKGlbdtMqfRzcpUNkfPnKPTMv8AMDI8yOKsEzPMZQpOyQWPE8S/ZcDjeAya\nrie0qRzVK1zNulK9JGkjXGKSrdbi05CPjkY9++ipEJORzKVDjVurQYsyqqqzVONUZU43FFO0Nxm5\nPsbuhIkOSFtK8zz0+U0gKSgJUpCipeyp42+Iy6LkzxKqeW8ns5HzFmmFkWssw5dZVmMvy6zLoIzH\nBDy1U6NAjzGQyKbJVNmySy+8p1lmSx7PVz6II2PUPpD+WxK7sri9CftMe9x4FXc15Bk3vqMa+lYd\n5dU5xs5Vd1RrHN5VRZtXjtZ8J0sK4buSsUHyao/LSYM/M+X5EpEhTjE1JjBgtBKZiG1ltUkOpUSw\nlIWSlkJd8zyiFABQLZ/aBTWz4O+JjNLdpjYp7Ly6sZ6Ji3FUZ91mNMZpJiLQluouSVxwlc0OQzEM\npK0F5TJTJP6EuU23QnNHzX255zOR/LlizMsbQ0KwzkMSO+YTKWeMgzVknbS2aW1SFHHMNUoFsxf2\nwz6Th31iexS7GKXWGTFy7NKItLJr0+WqqIozcuPCSyVw1VKZU5vnuPJQ95fsrbLbaFP61oU4pKkI\nV72pWKVQzH4hwq/4WZOp6ciO55q+WXqiJnkZjRkuh5TpsSFApypFO9r+235shS2oC2o0luG3IQ6+\n0lLIQ3goY1+jvx+/5uMo4wncyWSOxA15ID85mHcxuYCOQcyOLpxCnTkNJZBrKSD/AOKaDg5a0M7D\nF1pVgvITsAyWjnkaykDtUZhkuEh6Wyai9GgsUhVfhVEtJ2jBDLwXLYSleoNMrfDrbJQpbjSdCkJX\nYCs1+N1Vd8OKY+zleA5mWT4oDw0zPlduW84iPXYq6pBms0ScpbNkyZ0anuw356HkMRJjiH23nWUu\nq5jZijMWq5SyaTB7i9vMVJSMarS3WTG8MzvjqOXhWJXbmyNK6UIZq6cTJZJVs2YlIDeNOwRcFK8T\ncFADTZNNkSnBAMtcB0OCKuelpMxSEoRcvoZ/VpUXNZSlJGlGkEagcasqfmCheF2VVZhRTGq/Hcda\nqKKIuS5S21+2OpaRDcl/3lxtuMWErW5fW+HlNnyyi42CwKHpBYkxuyRDJCHt0LGMAeewgIa8b32A\nPZZXTSmruSgDpQ8FjqNtr88WHO3wxrMBllys0usEpC5ceK6D11LjtpJvfe5uPS+3GJHcWKYQMY8S\nAAMorGmKJfX4yIb+Xk2/T8vUl9pJlOxItwS2XgsdQUmwv9Lj+OEfI8SRE8TMxSnNRZdaqSR2Avq7\nD90+mwxGX0isd1EJrjshHzYwgIdtJqpiPy8b7b9fx46fg/Z76X2wEqXHeKSNt1IIBtfufp35DxlW\npx6i7meOyR5keJISo25LiXGr7bmxIt15ubbYmeRlGS0dGpNejrO8IA9IbECikcuu2vUwAH5jwGoj\n8ifW0+0EkIjuAatxfUk7X3FwD8bnAnw6groz1elFJSkQZCzcHdSFBy42sDtz0J+JMNk5NwnDkaHE\nwJmIVIAHetAUde4DoCh29B9eCU6ntsViM4mxUFB47C+y0km3S4PcduuxzIVQZq1TnyrALZcLtzva\n7tib+p9Lbb98TaXbMS0b46Yk+OZg2HfbYmECAbt5DuPy8jwJmVSTMq8WIu4QmYbptyAVAXN+LW+X\nUjgHlmEtnxBdlBJ0rmSb3BsEkuWPQb3v69BgR9/7Jf8AhN/hw7/Z6+6vqca/9qI/IH9cWNvRTGqN\noKX940W4Av4/ET4w+gKCK5SVq3Sma2Tfi2lY3+vONr8REheRM0pPBokgG/Fitnn074qUbqctwEQE\nF0R0I70YQDff0H/p59eNlL/kO8gtODbqAdie+1uT2+AGPheO02l91lVhquPkdrfW9yRxY9xjpbyl\n5JrFQ5FPpPK0+vcTU79fqbynsMfwqlmSgLZbnNczs7lrK2qLVN6zl5hWIgljPZtGJKsZnFrHWfFI\n0UMIn6ZNZiUfNLS5DbTkhmk+yNl0NuvFM9ReSynUFLLbfvOeWTZBuqw3OOZ4oUyoeKXgm6ilyJ9K\npFSz+7V5PsRlQae1NyoiPBcqCy05HjpkS0JaiqfKQ5ISEt3cAtWXljyhI4M5icH5niUVnT3HGWqH\ncjsW4Ki4l2rGzMft6JKVEQXcLT8M5lYo5CCZZ2eRMT+sVVHqWKdUHKdVoEpF1+yz40gJBPvpS8kr\nRtuS60VtkXuSuw3OHzOtIZzXkjM+V5C0oTU6DVaal1enSwtyE6YkglQKUpiyEx3wT7rYZ/ZSkW66\n84+S8ScvH0oHK5jOEmPq+EOR/IeJGEtIETOKMY8sWcX3MRld8qzRMsKa8CF+Yw8gigQVifssokok\nLlMyfDjWExIeb6PFYV/cMtSYQUoAnSp2orqs1RAvYtmUhCha48ni42+cMiUyu5r8EM7Zglsa8zeJ\nVLr7iGiQVOsRMsM5OobYWQm6JApTklpajpJnBQUGyDiNkfUTEPMZ9L+vP5swTYoTP3KBzQ2HDlio\nuWqhboO7K5ZzXEWamU6PfRz8UwyQ8iEHLp3j4hnFhaIIg7+rrMl0HJza/Z4UnNizLhOCbSam7FcZ\nktOIe9plJdZbSpKrF9SPeLNysAX+6b45DNUzBl7wBbjZdzPDcy9nrJETMEOqUKoQJFNcoGXXoNRn\nuNPNXNHS6tCW6sQiI6olGtLiVoDtgrmixZy/4i+h/tsra4STNhDmR5tbDlqswz9nMW2l0jIFvhYl\nCdlq0zXUlWhXVelpSdgU3DZI04jFLkixcKBrhcYrMRlvIU1TrbjlLrFcensNqS4/HYkutseatlJK\n06mVreaCgPMDZ0XIxczDkOuZnrP9oanR4EllOYcm5Bi0CbIZdjwKjUKTAlyFxY8xxCY7hblMMRZZ\nQtSYqn0F/Sk4C1+Rx9yd8qPOnjKNzlhTNVp5yMx4hYYraYXyHF5GUYYDxPerLlJTJd+LCpqo0OSs\nziXhKrF06wOW9qJKoSp1GIsWqzohOotMQMtV2AibDmO1RbAi+ySEyCYUZ1UkSHQi/kqXqQhLThDo\nWFbFIJwyQptR8QvErwvzA7ljM2W4ORsvVlFdczHSHqOheaq7SY1CFJpRkKBqrEJLMia7UoiFQVsL\nYCXA6pKMW0yDnHDjn6XvmWyY2yzjlXHNo5G75WYK9BdK9+x8xal+T2kVlrXYuxGfliX066sLB3AN\nYls6UfOZputFN26j8gtwtM1CnyM51aQiZFcjLo5jokokNqZW6aLFaU0h0K0Kc81LjehKiouJKLah\nbC9SstZla/syZPoisv1kVuleKtKqMqk/Zkz7RjQEeItWnuTX4Ya9oZiNxHWpbkhxtLLcZaX1rS0Q\nvHMT6M251Wm853JReb1Y4Cl1ipZPjDWe0WqYj69XoFiWm2NkZ5NzUq4aR8U0TduEG6jl+4QbpKqp\nkVUIJw2i5VdRT85w25LrbMduWh5TrykttNp8h1Opa1kIQBcbqIAJFydsbh4wwp1a8LvFKFR4Muqz\n63lZZgQKdGemzZj5qUB0tRYsdDj8h4oQ4oNsoWspSopTYHB3wLPVfN/Kzzf8m6eSsXY9yPJ81MVz\nO4ffZZvENjqg5BjkWNpoNyrieQp46dciZhhCu4y2QzeTcoknWJ1yRh1VUFuk3MDNSpEykszYMOW5\nWYlagKnSURI0sMIehy44lufqW3UsuJfaStQDoBSjfhOzEzUMueIfh/4iuUOv1qjUvJsjIeZGcu0q\nVWqxRluO0+t0md9jREqmyIz0lEmnSVsIUYj6Ul8JStN7gl5iMGp5ezrCweWKLJUbDH0Llx5KaLkY\n84hFVvL+TqTWK8R2nj91NiwXsJbLa383H01BsiZ3YmsQo+ikHDJZBU501enSTW6a3LYWxAyW9Q2Z\nOsIbmSEREJcMcuBJcDjqlIZABU6EakApIJy1/Jubva8kTahl+qxalnH+0bF8TqrQjGU/Oy7SKpWX\n3mRV2ovmohuQaWiO/UytWiGt8NSFJcQ4EcGKm/B3LzKS+xF3HNlAEw72dBQA770PYD6H5entkzqV\nUtuC8i4TdxB6W1p2622I25/DH2DnSE1UaAqnN2vGlqBSLEgKIUknY7XSd/6Yiq7IwR0qYmxIg/ep\n6D2KIqB49iiPYfmIe4sNPU1KQ8VAa1MBwE72KgPnudvie2Ia/WXaGxktAJGtMJhd77gFAFyOhAte\n5w7v54zyEh2hxHSJmIDodiPwTp/h6B/z1rhajQlMzXJNjYOOEdhqve/zufW9ucP8GCxGr8yUkAKl\nNSFJtyfNbKiB3BJG3pzhzuDAjYYtRLYGUeCAaAPAE6wHsHjYa3wUROFQfZZBBDccg36FRAI6/wAc\nIXhmxIg1bOEh8qLbsd1SdR4CXyob7jr2433xHnsio5exyS5jdAOm4mAf7IKlKO9h6AI7/vDzyYn2\nfKU6hICvZ3LHpfQoiwv6Cw49MPGV5seo02vmOblDLzJsL7uNO2G3Q2tf584k16TZpsGANxAFDuAK\nbQb+78M3cddg7+nngZS5L1Rqx87hDKrfHUk97G9vpfAvw+jqpRrLywoIEZbh1Ai5QsL69wDxcWO9\nsRx9LLfZANDHP8MUypAA+NlDsIB29C+dAIB6dhDi3KpyWKqy8Ei4WHNuh1Dtx+O9r9MHsoyo9RqU\nyUj77ThWTYbalkdODzuPTjGnRPcf8/lwf+0D2H4/9OC+gdz+H9MHe6v2Q1axAR6yOc0cv0pkdtjq\nGETk0UqZVROYw+hSgIjodcYpRI7xq9O1MPpSJSNSiy6lKRY7lRSEgDuSBj6B8RKjBVkTNaGZ8Fx1\nVEkBtDc2K4ta9bJCUIQ8VrJsdkgn06YqoCxCqdXgf3TB6CAiGvPbXfz899vXXvKK2tKtyN0ne424\n23BuBtj4UedcDiXkXBSTf5XBHqTbnr3xc/la5TWfMPTc+5Ps+cKJgTGXLlDY8l8g3C7VK+XUoEyb\nZ5CoVZKLgMex0lOLiadZpM3ihG6x0gkGqoIGbpvF25Wm0IVSLOkPzmIEemoYceffZkP7SXSygJbj\nJU4buJsdid0mxAJGd548Rncp1TKtMg5cqeZ6zm2RVo9Mp9OnUynX+xobU+YXpVVdZjIAjOKcRqWA\nrylgqCy2lRMPV5b6OLPOLMpWWt4b5pK7ZcZrZj5ZrzDWGwPcPWuRdnM0o+UisDMYuakH2MrWyM4m\n8Z2pixOWZSZg4dtzkjJdG0iAvLlQhzXWYVWQqMZdNkJccMN1SzaPL0FKFqVEeSCuM6lPv6RcEJWA\nLtYZ8XcuVmjwpmYskyWKunLmdKbIiRWq/BbbAXUaIXg49HaarcBzRGrMJx0GOp3QhYLzCqB3i+Wj\nIFps16uU2+sVwt9kmrXa7BJKApITVhsMk4l5mWfKAAFBw9kXa7g5SgRNEDlRRKRFNMhaw1LedlPL\nU69IWt591R95x5aipxajblSiSeg4AAtjTKXTIlNjRqJBjNxaZEhMRKdEZFmY0OKwiMzGZBJOltpC\nACbqVupRKiVE78pfLebmbu+SKaS2J0o9DwHmTO/180B9vDJmxJXELCNbK1LKw/1M9iM4KzGaFdyM\nWXqcjGyI6bmsRYZqL0hhL3kJYps+cpRb8zWIbPm+VYLbKS5e3mXJRYHSrYYB5yzV+hVFo1Qep5qT\nk7N2XMqhHtXshYFemrioneYWJBcERKCv2bQgPkBHnM7rwE3Lv4sOgsX7inwkjdOw6gExCG6OrsIi\nQTdOtB3DsBREA4TYLZ9rCre6pVz8+l+Odu47g4eW9LcxSVEFD6XG732JSCNunvAXF/x5wxQ3+lLS\nbVQpQMYply9gDawAB+oda2cQ2BhHZu298MdWX7K1GeQRocuhdrgb7K52BAtufhgEw4pb6ozit4T4\nS2om/wCpUvU0U9kg7bbfja0HOdy8q8pnMxbuXh9bkL6tQUqWClsSgzVtKULcqFV7wUCwp5SaMzCP\nJZiRhzjJOQcHafXABD6wDdOSoURVCm1CK28HzG8h0upQWgrzWGpBPllSynR5uk+8blN9gQBz4dZ7\nRnrJVMzUKcaS3mJNUQinrle2ll2l1afSlAyQxGDntHsRfCQw3oDnl+9p1qm2F+TZ9lS+8n2Nlsw4\nzjmvOLcLBCR6dUkiXq94dTrc8+gnC+UaADivGiJGYMyNJ1mKGfTLLRZjrnftFG6qXHUahiqVOhui\nZFSK0HGiWVefIieStTajJj3b0KWRrbR5g1pvdSbYoS/EhGVcteIlZTluuPueGMCNIcM9k0mlZkTP\njty226HWC3N89qKHfInP+xqMd8JSGXQtKgLbhhB3AYztGYAyHjFWOq+Z3OCHVAXsqbXLUy9YMJmS\nHIDGiGbrCfHqacMLJ9NGkzGZS64MyoLpt1XADzDDsB5xciKr2CruU/2dToExQCVq9oTHIJMfaxc1\nEhZKbHSSWjL2ZESc2igijVsOVfKrObW6siEpzL8ZKnIzIpTtVCkAVdXtIcZjeQPOjtlwlClpRiGW\n6jXfHsfI0rJVOsdHt0Y3h51at2yLcQ061i7LFsrFXnzqLekTeM0peEfM5VkV0kiuoxdt1jpJAoXg\nfOZkUysmO824yZDLThbcSUqs42FJulW4CklKhcAkEEjfF6n1OlZlqtKr1Gnw6nDRKlQxOgPokRlS\nILzsOY02+2S04WJDK2HC2VIDiFpCzY2hBF1YaWZOiCYCu2Jw330PWUhwDetdtD6D7cW5rSJ9IZPK\nmZKUk7dNQsbi/bc9e+PYsky82Vmlu/6pUduQhKjtqbUQe56K44xIYRQj6JsCRwKJwenW0OvC7Y2+\nwiPYRDx76HiiHlU+Q2m5CXIyUj/wrHH16c/XEGeKeKgmgFrf2SQz903KfKc4PrY7c8DpiHOUzpRT\nJbRuk3wxD2DpV6B9/Al7/wDLuYZbbeiSVCxWgk9zcjV1Hbve19+tjVQryoeeKBTrkJlNtIX6ktlB\n6fw9TiVPpcZN1BoqGESldogO/XqDoERD8/Xx34X4kdURa5G4GlfpsLmwNrWHTfexOGOHDZhor4bN\nnHYUoWAF90kgn5jr6dcJrI1I1fx/wxEBN8Q4iH/hnIYNh+G9DvtwSRI+0ZCgNwltKRuOqSk/E3Nv\nh3wqeG6HabR8yOyCTdSXAVXtazgO5/4t/wCJ4De+kDO12KKpjdP1lHXV3AAE4EMPb5DxCzG9gmuu\nAAENKI730Ejk9Tbm/T4YccuyWJtGqkhk31NSGSRbc+USO+4+HXi2Hi2tEGzVl9XN95RTQgAh3AEx\nHfbx+Ad/76sSW5UKgQsXCG7D098HsL7C/S3XffAvITaoH2w6vVp8ouEm4tpVcgfzI9fhhi6ze/8A\nAP8ADhg9jV+7/D+mCP6Rw/3v/Un+mB07D4hQXSKQFCmHYgUoCGhH1DQgICHfXkN9/QIozikLWy4T\npJPUmwsRuD32PG3pxhKS20tojQhKkDYhCRvbodItf03Fr7HGw7gyzYipdAcoFKcPXXb/AD57b0Ac\nep/VPltVyhRJBJ2tvt/LtsN8cssoeStpQ94Da/cDbjfcDg79sdkfo6qxAZB5HPpXKtaMnUzDUFKU\nbk9LJZKyE2s7yn1grDPkvIoKTLWmxE/Zlwk3LRGFYJxcS7UGRkGn1j6u0+sOUXLL7KF0rNLDshmK\n0pmkkyXw6WWwZyz7/lJccOpQCE6Un3lC5Cdx84eLL8qmeJXgc/CodRzFLZqniElqi0hcJuozi7lW\nO2RHcqMiJCT5KVqkvF99seSy5o1OaUKsZy6WLlY5iub/AJJOT2PRPnzlo5YuVPmmos3e7XS/sBTK\n11stMvWVrtf6ZUbQgtK1aMr8+3Yji1xPop2CMesgmhSbqps3SxCnO0udVaRRgDOp9NplSZU86yGz\nKdcaflPPNMuDU2ltYT7KVjWkp12SQklRzZSs65T8OvErxAfUMsZzzfnnI9Qj0qFUfahQqdEqVLoV\nNplRnw1hia/KjOO/bSYqjFeQ57OCtJcQmuNCuuKJvCHNb9IEy5U+XWHkse2blu5ZOWrB8hSVLjg+\nkO7W0lpOZybkCkzsiKeVMkEx/Gsmj6dtCxWU3cH8jZ3DArwyRE6DMuKqDVK6mmwEGO5T6bToamC7\nDZU8FKVIfaWq0qR5CUgrcNluqU4pINsOtTpFcj5kyB4WuZ3zbIRVIWcs65yzKzUhTszVBqnux4zF\nFpNSishVCo5qjrq2o0JJdjwG2YSHSjUVXpwLQcQUHm6gc50vGUHXcYczv0OGYuZi0YQrTqVgqlX5\n6Yph4fKdEqDkHjiVrtSnJatO3MGi0dmNX284uhFC3btGSCFuI1DYrKZjUZCYlUyZPqrkBBU2yhTj\nBblx2jdS22XFtEtgE+WHCEAAADOs1VbMFVyFLytUq1KmVrJf9ojLuS4WZprceVPmRYtTEihVWoo8\ntDEyoRo05tEpTjYEtcVCn9a3HVrotmpnTeY3kdwJzW0flww7jvMFW5uk+U+044wTQJKt0jMENM0G\nMyZilm4oUfKP3spYiHSUob9yzkFbJaGki5M7kjvXbIY8S0zHqlGp1WRTIEKa1VTS3o9OjqZjy21x\n0SYl2EqWVOAfqFq1lx1JJUsqUnS90t+q5Q8Qc3ZGnZuzHWaG7kYZ+p1WzPVWptUoEuJVnqLXlNVV\n1hlDMN1taao0240mHCdaQG2Q2275xn5q8Huw5GbjlrNGDeTzBnMhhPmUxtj41c5Tj4/hZmvY3ybX\nporzGee6Vjiy2mNhLjW5xmk/gD2qWe3QjJoshJr/ABjSRnlrM0FT2XJa5kOkxJ8CpxWkN0xTCVNs\nSW1HyJrDDjgbeQtOpHmqLuge8d1krvh1mFlXinTKTl7MWfsx5VzPk6sVJyXnkVSQzKq1GlRy3Vst\nVKqxITsqDJYWWpIhMt0/zXAWU6SyG7q8zq2IuY76Srmi5HLfy6YbVcXrl/Na4HmBJX3g5+hc7UHl\nYq2SadammQHUk6GMosbCQ7eoDjuKjo+FeIM1pSTVfOZyUQOyzFRZ2YarQnoEQe1U8KE3Qr232tql\nsvNuecVGzKW0hsMISlJ0laiVLUMImVm67lPwPyJ4nQM45j/9i5uchv5SMxsZUXlmpZ4n0udD+yW2\nEedVJEqQuoKq8h56SkvJjsJabisLFVeV2jUWFyH/ANnsyLXKbWoC5ZbtGcpfJNliIhkym7rI1rKs\ntDV5zaJRBIjucXr8MY8PELSCq6rGN/0RA5ENJguUGKzEX4fuIZbbfkPVT2lxKEpcfU1UHmmlOqAu\nstt2QgqvZGwIG2NQzZWapNy1/bBpEyozZdNodLyg3RIMiQ45FpbM6gx5U1EBhSi3FTLkaZEhLSUh\n10eYsFdzisbiKpFZ+j+yvzDGxnjK2ZToH0sSlTjpq/0mJuDaSpKeP7raHePLK0fAitOY8mJpJGQn\nKgs8Ri5ZwQFHJPiAVQoyRFYg0mr1JMSK9LbzagNuSI6HQuOYDr5jOBVi5GU6nWtkqCFK3IBGztQK\nhU6t4rZdyma5XadQ6v8A2e3ZUqNR6rIprrFVRXKdTG6zBdZKkxKzGiFTMSopaW/HSSlv3SQelvMb\ndcfZk+mHLyo5hxLgAKVlPENbxhD3dHEcA1yGlkLMXKjV18dTs9dDKupGXVpN5YQ8RjswN27mmspP\n6rFqqiBOpnrAiVDN8GFNh05TUmEqGHzDa9pRKmUtlcVxT5JWSw+EJjbAshatBucYh4fwq3lz+z7V\nM95czDm0VTLGZF5icpZzDLXSHaLl7PcxNcix6aA2yyKnS3ZMise8tFSXGCpCUgXHH7P9BrGLuRnk\nrhJGqV9vnPKeQ+YLJ19s60KzJdWVEo9oTwZSqgvOGTCTJXXllrV0sScKJysjSLUsgUgrGMYEh9lq\nl5fp0R1tAnzZdWqDyygB5MaNKTAjNFZGoNrW0+4lBIAUNXXH0blCpSsweN/iJV4syQvLNCouWKFT\nmEvrMB6oVanHNFQmIjgloyWoc+nRVPgFwNL8o2G2KCsHysa8mGY72oRI4l0IB4UKI+n5eO3YQ3wI\nq0RL4pj6RsptQ27jTt8740nL8tNWcq7T9yabUFab8hJJuBcW5Av8PW+HE4kcVNE+9GRBwUe4AICR\nz8QN+O4B59gDt68QR3yy7Jjq5WU254Lex5+O/Hztjmt09UrPFAqDf3Y6myVDtZJF/wARe23ww1Oh\nO0cxxxHsCiShRD0AClUD5eQHzr18gOuLrrSF04LTa5JSepOxSevTi23bnBamVoyc7VikKX+r9gke\n76lII6b7bW33th3cPftOXYFUOPT/AFhR/wDOQ35eQ/u8cC4jZha3Lfsgi/YKA468m99+MGTHbZoF\neZjkalRlggWJ1bgHtyeN9+LG4wjmkCtHrUqZvBPiDrXYSqAIe/kA/wA+lpl0zpDyrbWCRYXH3SB8\nbd7YG5KLlKytUlSFcPFRJFtlIKTvbi5/jjx0+O+VYpKKDr45ADYB2KOiiPj5/hrfFZlj2KU8sJsU\ntqJsP929uLDfsdj8MMFFcakUWoyGbHzGJKL8G/lmx2/gNxzuOJh9kIf7T+X+HE32yf3R9R/XGV+y\nvfvK/D+mAE3cCoQ5f9YBMAgO9B94fT376Hxr57Hi7IQG3Ao3sd734O19wfodhzxtg61zp4Va+/Cg\nehvb4EdLXxtbLFAx09jsQENfMP7vn/L16eQVNpUOljq55/D13OI1XZfB4J9DYg9bfO3XF08B8x1M\nxVyp892BZyKszy080Vb5foaiyUS2jFYCFc4nyw4vdgVtTh3KM5Boi+ilStYcYmOljrSACk8TZt/9\nIEvDqLbFHrUJSXVPVFuAhlaAkoQYkv2hwukqCgFIuE6UrOoWUADfGeZrytOq/iF4XZsjSITdPyXN\nzVJqbL63kypCa9QhSoqYKG2HGlqbfClyPPeYCWxdtTi/cxnyA8xFM5VeZqvZov8AF2ebrMNQczVh\nePqLSNfTqkhkTFlppEKsghLy0KxFm1lptovKKnkCLoRxHCzVu9cETaK80SpM0ypMz5CHFtojzGlJ\nZSgrKpEV1hFgpSE6Q4tJUSu4SCQFbDHXizlWfnfKcvLlJkQYsqfVcuTku1Bx5qIluj12BU5KVLjs\nSnQ45HiuJYSGVJU8pKXFNIKnEvfKlnvEdQwtnXla5jGOQy4czqfFttbXvEcfXJ7IWK8tYfcu1K3a\nomq2+Xr9etUDYIqRe1yzxLuWYPiMwaPGBzqgsVPim1CI3Cn0yopk+xzzFdEiGlpyRFlxCS06hp5T\nbbzbiVFt1BWkhNine+IM9ZXrs/NOW85ZPepH6Q5ZTXYRpWYHZkWkV3L+ZG20zoD86nxpcuBLiSGW\npsGQ3HdbLvmNvAJKSbi1T6SLCsDzOL3qQxZkV5y5Y55EbJyOYTxkEvXEb5KU5SuNYRlKZBsbZdGF\ngpW5v3lqnrRI11Ge/ZxaRi2UaznQZLuVCrFfhir+0qiSVU6PQHaFBi62xIUwW0oSuS6CENrfUp1b\nqmw55ZUhKQuxJzWpeE2YX8iewNVykIzfUfFOL4m5mrPs8tVMYqKJi5DrVKiLSqTJYprLcGLDZmKi\n+1pZfdecjealsQOP58sC8vAcmuOuVup5huuH+XTmjU5uckyOeE6JWr5lXIziKZ0uLrkdF0h1YK5X\nouh45RcRUHNrvXSkrbVUp40exaNx+tXI9Ug01mmMUxqW7FptQNVfM3yWn5TxSGQgJZK220sRwUoW\nVErd/WaUjmWZ4d5ozXLz1Vs6zMvU6tZ5ySch0hOVjVJtLolMQ8aiuU6/Um4suU9VKsUvyYyG0hiC\nkxQ844u6UuW+ZTk/Lyy8z+BcAsOY6Vms8czND5jTXXM0RjuJTaIxcrbJCXoy0dULVNuRPWkJ1P7P\ntzlw/eXyWk5Rw/j6u0i2KksLrFXpBgz4cBFQW7U6lEqBflIYSkJZL2uOpLbqlDy0uXQ6dRfUpWoN\npSnWSylkjPzGdMmZmzU9lJiJlPKNWyoKfQH6u+XDLZgpjVND0+FHbKZbkZYegpSy3TGGWUtOTXHn\nQwf8sfSOcoU/zD545xsT0XmHjeaDIuIJrBmOYK5J48QxFCIzeN4nFLjO8vJQ088trC7s6KzcRCeN\nWjaYr6ksinNlsgpSrtKMPTq9TNU7MESNOFQXHVCYQ75AjoDsZEX21wpUpwOIZSUhga0a7K12UrSk\nUrwoz3TaHlbwtzDV8qvZNiVqNmmqSKd9qLrElUWrSK2Msxm5MZqG5T3ak4iQqrLMeV7OpTHsmplB\neAuJee7EmO330RhZeuZCWbcgc5ltTLQx8ZX3K9jZ37JMhbIUMfFc2VmSVWZRDpFCSLYlKuUH5FEm\n6i7fpdGGw6zESrLLpakFNBEt6UEIbJdTIkmQPZgp1IUQlVleYWhq4JTvjQK54X5gkU7x6Dc6jp/0\ntRsuRKCXn5iBDdpFGZp732xohOGMhyQ0pTBiCcS0QVhC7tgFW3mbpD7kmzVyxt4i1pXe+89Z+aKF\nmVmUUNWaUVXHthqoxEi6JMGlC2oslLtnP1FvEuIo7MixwmSrFIipQVU486iu04Nu+fLq32iFkJLS\nWhGej6FnWV+ddwGyUFNgff4BcqBkWq03xFo+fFyICqTRfC53JciKlx8T11NytQqkZDDZjhgwPJju\nI8xchD4dUi0YpKlCwvMDnauc3POFyr575VobMSXNfcJLAsbZMdT8HVy0+JyfiOPocHTH2MrPXpt9\nOzUPKOawvKWVeyw8IjX4VkaSMYiZ5Fuw7l1VqsVanSqY1OTVhKgNPxXW2vKRLiIYZbVEdaWtxxpY\nY8xwuob8tIKiACoJW8jZTleHvh34i5dz1Jy4rIMan5qehVmJKmmoSaHmFyrS57VbhS4zUSNJYROT\nHhJhSJSpcpwMJBPkLdtTzIWzlw5mvpM+YGUu0SykuT3knw7lRSSr9es8hXoyxK4mbTCp4CuWKCet\nZIw5G5r8ovY+LNDPE155E+kFCM1zmTv1lqFUc41J2W35lHpFIkksIdW0h1MZDqg2262pK7yqrLIH\nlqBXfY2JOELw9j5tyf4E5VFDlOM+I3iRm2jwmJsuCxNeh/bjsZK5kyJLacY00bIVBS88ZLakRFJu\noFxKQeCUsgdWdUWBNNA7tmZU6CJjGRQU38QyCJjmOcyKInFJEyhzqGTIUyhzGExhTmJKXoUBKwAU\nOaSATYahx1JAtbfsNzfH0hR2V0x3NchKlKbcT5ra1AJUvQ0lQcUAAkLXpKlAAAKUQABYBrayBwiX\nLQBDRV3AD662bx7+2vy1vzxxOiaKkoi9lNtKG3Pu8jfe/e/PY2OGTLcpFSgU6quEFaXFtFR3+45t\n96xBttf0w+yoFXQiVCgBhODMO2h8o9I99CH73+djxCy+THUwoH3FuE89F3AJ72+PUcYpUynKZzxV\nKoE2SuG6gW2v7v8ASx9Nx1BwzidRrKJG0ICkImAe3fRhKI77eRHew3/Pi5OaSWGNI3cQQfXUAb3F\ntgQP8r4lyfVlVReZ4zvvNsq0JvewAcUk7E9gDt8xscLxXGRkkSH77IoUR2HgA3r19vPnvvihG/uR\ncWdtgqxt3A7evJIOD8xlKsrVJqOACuwGn94LAPHPO5/hfZPJpgzdt+jwUpVN7DsAG7dh+Qb9P13x\n2yv256QrbckbDY3Tb6777kenAxDllRpuV3w+QLOLClKN7haQPS++w4vY79cPf28r/kv/AD45+yB2\n/FOAXt0Hun/0f0wFEVehZT00Y3b37m7615Ae/r5H178FHgVNgbnqD2P4339L/QjHqinUlY2ULE2v\nxYfL5Y3LG6FSKlAA35/6a9vPv47ccsHW2ptW5Atvz1+d/X0PY37loC0BQACgOe/G/G3T15x0J5Us\nHYNkcF8xfN5zGxGQ77jXAFhxDj2Ew/i+1MqDOZCyLmKTfIRalpyC5iZ5zSqHX4yOUWfvImJWmJiV\neto5gqUzZRo+M0eFEVCqVRqCH340FyLGREjupYXIflqUE+a+UrLTCEpJJQkrUtQSk7EHIPEDMWYh\nmHJ2Q8nO0umVrNMPMFXk1+tQnapGpNIy6w0uQmFSUPxk1GqS3ngG2330x47LS3XUnWHG8MYcq0lz\nwZgy2PJxie949xXQsX2HKDmDuspaszPa8rUaeSWc0BO9VanNgnbpkWfZyjTFdfk2URIy7RNZI6rp\neIegf2LSzWZUxNKivR4rEdcgoeU7LLZaaK/I89tka3X1hQjIWEqWm+6ilV62Yc6t+HGWcurz9X6X\nVK7Ua1Fo7UmnMwsvolCbUFMJqZpk6oLManUmK4yuuS2XH2Y7ikEJbRJbtXet8uvMdbZe5Vyr8ved\nrFY8eCJMh16CxBkWYnMfuAbA8Oyu8VH1pd/VH6bcfjiwnW7B8ZHaxGxk/vcD26XOeLzTcGYtyOf1\n7aIshS2DYqs8hLeppVrnSvSbWsLYaalnPK0Bij1OXmrLcWJVdqbKk16lMMVRtS/LDlNedmJbmtBY\n0+bFU60FEpKwdsE/l85LOYHmeomdMi4tpNnm4PAtOGxyqMZRr5Y5K8WIZiMiEsYUFCs12TQl8ikT\nlUZuSrizpvIxdfJ9pKslyLIpjfp1Elzo8yTFZcWmE0VqCWXXFPLK0p9nYDbagt8agsouClHvEG+4\nHNXiHlnJtcoFGrtRhR1ZulpjsrfqVMhsUyOYz7q6zVFzJTKo9JUWVMNS0oWy9KPlJdRpUoQa5Y6p\ntewPjmdTqPMBD5qkct5XpmQHdwpgRGFHDCoqxjOCq+OpdWNbzMjlCAklXTTJNaeOXLyEdLEaOY2N\nULH/AF79JbYZixVhuaiU8/KYkea0ERClsAIaYVpCjJbVcSGySpCiAUpOnUQok6pT69WIDk/K0mgU\n6jUOpUZMCol/MiHJvnOvTqqwHlRmqJLjhCqRMbQlElCCtDzoLvlFvE3I3zQZSzpirAB8NZMxxdMs\ngycxbrJmL8k1iKiKcusi2e5HnSK1RSUQoUOs5aISdjQYqR7V8/jI5y6au5FqBhcOg1WZUY1OVElR\n3n1621So0lpCWCoBUlV2tXsyCRqcSCkLUlJIKhj2veJmRqLlav5rGYqLVqdQ2nG3m6NW6NNfkVJK\nFLao8XTPDC6q+EOLZhqdS8400+8hC0Mrsxp8vKGNUOZ6Ez3jTmbr+TsTUyOmMXDA4xlIanMXq+SD\n1b9uc3Et0IhMVvEFphWbotJsrUzFpLzLgG7SVeu0mrF2ZXBMeNWIU1iel5uKlyNojqS2k+cWw9KL\nqApuO4AQ05cBSiUhRIAIGXmwZikeH9Xy1VcpSabUKo5FrIkVhl+e6gUtMo06gCFIUzNrUN1aVVCI\nQ44wwnWplDZW42EGuHctXCoXfJVOxZkqz45oenV1v9fodqmqTTiJEIsqa02yNiXNfgQRSUTVdDJy\nDb6qkomo5+EkomcwuixpTjZeTFkOxkIU2++2y6tlroPMdSgob5F9Sha4JIGNCzHmOgw4ceizK9RY\nVcnaXaVSZVVgxqpUVIVt7BT3n0TJWoBSUeQ0vWpJCNRCgFtixFlqEplWyjY8WZLr2Nrw3K2qWRJ6\ng22Holpd/BUWIhXbhJRDavTSyqKC66BI6QcGcoILrtgWRRVOSm3EmQUIfeiSWovtSkMSHGHkMOgk\n28p1aA05sD9xZBAJAIGC1HzNl6qInUOHXqJMrcaJ5k+jxatT5FWgIWkJK5lOZkLmxkBa0oUp5lAQ\npaEr0qWAVGG83ZPwjZUrdie7TVBtb2rWmgurFX1GzeYJWbkyCNsLBi+XbuFoty+aJplQl4wWc1Fq\nkI6iJBi6IRwXwvS6bMnyYD7kZ1xpxPmt6QsNSEgOhKiDoUUba0WWnYoUki+IZWXqFmvLbEDMlMi1\neDHnQqgmHMStcf7QpD6nIbzrSVoS+lpZJVHfDsZ9JU3IZebJTgWu0wSWlCgURKRcFyh+9oRHrA33\nhHZijsQOYRMBhEd9QiIzNKTIdhk8rjpbVcm5KRpGx55Fuv44tQ3DTKPU1EkBuW46m2w0OL94DoB6\nCw4HAFpK1fEdyDA4j++zOmIh6mMiHYR/EB18x7b1wF8tUdtaT/3UpJ9BZwjbi43Hp8dzgoGG3KVI\ncFv75GQoHuHGyNrc21W7jYYYfgCklKjvsksc34AYm+wdg+etcMRKZM9jg+Ywixv1TcbfC/5BthKp\n8t2h5MbKiUqROI3vslayk+n7NucLE3hjoRmzj0kM3MACPoAl9t+P7/IjrgKpjQuUAAClbv8AE/j8\nPnbpp0JbS/Z5AI1zISFAki5LjQ426b7n5eq2QKVSQIBBD7wLD6eddQa/T5ee/Yd8Ttvl1LCV76Cg\nb9rAb+p26dNiOAs0OnGkRcyyk3Cnw87bjZJUvp8uPlhtQVOg7+J1AAl+9vfgOkQ2Gvw9Py4knNJU\n4UIBspAFun7JI45P9cXsozlzssynZCgQZbiPe7WQR14vt/jhSooZ+7KUTb2mbQ+fHfXntsAH1Hf6\n8V4ZENTilCxB/Djgfnbc7YKVBjzMtPtsqt5hQQR3C7E7X9b7bG3e+Hf7K/3y/r/z4ufabf7v/wDV\n/TGX/ZUr98/85/pgNKGEFjGL/a2ID+Pf9S+e/n+EqSCjSeo2Pba/4HjnDo4m9+Ljn+R+RHXn5YVq\nG2kBv1+fvr08h/P1DXFdrZ1Sb8nY/M7/ACxNbzGbi1wncdTbY+g79Phi2/KLzgWvlSnLrum1XMGF\n8rVpKnZ/wDkJsD2i5aorNyo/RauTdCitet1eXUdSFJujIhndek11RWQdsHDhvwXp1UdpL7x8pqVE\nlthmdBkJuxKZSdQB2PlutklTLyQS2onZSSQc2zrkGBnyLAQqoT8vZjoM1VRypmukuFuqUCqOIDal\noF0pl0+YlKGqnTXVBEthKQhTbyELx2ZwdimD5WOdjmgrXL9ccgxOD8u/RPZq5psXQMhZ5dnYazBZ\nGw4xs1Lh7WaPlAB/a8cvjzTKt2R+dxYGUa6bOCSQyDh+/etkSIim1mppgvPJhzMsTKiw2pxYW2h+\nIHWUuFKrKcYOtLbhu4lKgQrUVKPzxmGvSM7+HWSns2U+lSMy0Hx3y1kqsymoTC4kuRSswOwanIgh\n5kFmDV2kx3JkNtKIzjyFpLIaS001Rrk6jLXS8e1DnLzVzb8yWKKHauaem1CjVXDL6eu2Us85xpjG\nBlZ+z239qsg1WntarVIKRaVueuF4c2mbl28lIVyJiVUwAj0RSkusMt1eZVKhFYdqTLTLUQrekTZj\nIQpxx3zH22g022UtuOvF1awpSEpI+9p2fVwanUqr4b5byDk6u1WnZKqlSqVQzEiLTKLlbLM56SzF\nhU4wqVOqLk+dLZXMiU+mogxWFNNS330kktX0vtls2O86/wDaLIigWi10uNgaC5uMFH1O0T9bZwlu\nnMq0dzL2aFawkixRibE/UfOU15uOTbyqzVX6mo7M0KRADjrrjE7PaGXHWkoYLqEturbSh1yS1qcQ\nEKTpcVcgrTZVjpBttjLqdBg1fKf9keTU4MKoyJNWTTZTs6FFlOSafFolSSxCkOSGXFPxGktIUiO8\nVMpWPNCAslWK80PNzTBXJt9FVzAWqvuMjNccfSIc1WR7DAP3pV5K0DHL1t5JKBIypliK2MVV1pqM\nkJVRQp7I1ZOpBcAOu4KITNEKj5ZqDrZkeyZhqUlxtSrqdCFoK7KWSC5ZRWhayf1iUlRtc4dKllk5\nn8RfHLKcCWijqrfhFkikRJbTRSzBL7cxDILLASUw9KExn2WACIbjiGkkhKCcMUVS51f6SL6OrPdA\n5ocq8wPLbzTZ1uUjie53S3XdneoIgWWQeZjwZlGsyk24Ti5yuWhxCHsEewAKjcyMYuwJxSJ2bfpt\nQoz7eZaFUGKnKqFNqkp9yI8+8+H27OFcuDJaWshC23CguJTZp7SlzTdIwp5jqlNl+DvitleqZIoW\nVM45Jy5TYdfp1Np9NcpckqhttZczRRJrEZBejTIbclMV129QppdfiF9QcVeqmGLbbLXiT6cyVtlm\nsttlWmBmLNhI2qwTNlkEY2J5qpUsTFIPp16/dpRTAAFKOjUlisGSSiiTRBEhzlNz563Kbmp9bi3H\nEQA2VOLUtVkVU6RdZUdKUkhIvYbpAGDNRpkOBnX+z5Biw4sOFJzOmX5UOMxFaLkrIzQkvFuO22gu\nrUAp1zTrcUkFxRIBCP6S3IV9xbO8vHKxjq2Wqp8u9X5H+X99E0SuWKwQdEyS+y7VXN0yXebpBRUg\n0j7m8v8AZl3TeedTiMkVVGPUatiIAK5D18wuPw2oMOI46zAiU2nKDDTjiGZHtjZekPPIQoB5Uh0q\n8wuagbWFt7k/CWHS6wvM+aq3AgT801zxEzfFeqk2FDlVOjpy9NTTKPS6dKfaW9Tm6XBS0uM3FUyQ\np4LWV+4RI+fmzn5t8bO+e7C+W705xA5uuI8d545TLZMTjNjyvZXTx/8As1QhpFfRkT0Ww4jsDaKn\nUKJZoaLj5eFdTMkwelUWkJppCcZiT9sQ5NbhzH1xlLiIl0x1bgTTZSI+lnyEBXkORXEhflOIQlSF\nKWlW6lpRa8KkJ8NqpE8L8zZcpbGYEwq7UcrZ+gRoi3M60FyrCXU01KWplNViV2I69ENThSJD0eS3\nHYdbslmM5K4ynMKBlTlMAkTcgqQSjshiiffUQxdlMXe9CXYD30I61wrt6ZCgDv5sYpvyLpSQP8bY\n+j3z7FSpBFxpfDh2sUha/f2O43PGxBt3uX4xyOTyOtf1rMOnt2EegQ+Y9+3bQcUIqyy7CKr/AKt8\noN78Xvvfkbbf13xHVmddEloRy8w6sW5PuBYvbn177Ww1sHX1cI1U29FOCZt/IBIPv/j39OL8qN5i\nqjYDYlwem4VsOb/ntiGJPDVLobCzvJQiObk3ulYSL/hte+HcpyLoy5fVT4ZgD37CUQ/QR9Pbz24r\nxHFNy4a1E20LTfgXHvXO/wCI+O+KWbKcleXnYrSSClxtwBI32fSTt02N/n8ThpPpFnHmAe5jkL3/\nAN04l8efTfbYdvYeLyGw8Kkq33StQN9hcarbDr13+Hp49U3IM/KUMqIS82y0sd9J0EH5Ec/hxhyT\nclF8gY5h7dW9h/qiUQ/kPf8A6cCi2UMpUBY6k9/Q/PYdD/DDussuoqUNJBU5HdFh2Ox435Ox/DHi\nwlOuqJO39WGvUdl3/cO/mA69eLTCit9JcN7mxvxv6H/IfDC8pj7GyhOQzcLS4FgDY3UoJJv6X6fj\njQgp8FUDmEQEomAdAPgS6/Pe/wAvXuHHEhtLjzqUbi46bc7cWt136HBSjyAvK0RUkjWsLCtX/wBw\nkc9Rtbjrxh++0/8AfL+n/wDnil7Mr8kf0xBqif731/8A+sB9ZT7wm8feMHpodDrsHj9fmPYOC7Q2\nIVz+NgT1+nyxUdF1FSOQATsOxPfnjY/DCoqu0x7B43rx4ARAf4/qH58QLGly/wAevNiLj+Py6WxL\nHVdGwtfn+H/+vXnti0nLnzQROBomywc3yucqXMQ3np2JsjB7zE40nLnM1OVh2CzBujXJSBuNVVLX\nXpFfrM1U5Mj+FmXyaTp2n1EAvBmNPRDbWFU2lzwtaHAqfHcdU0tCSB5akPNkIIuVtK1IWoDUNsZ7\nmzJj+Zp0ORHztnnKBjxn4TreUKzGpzE9iS6l1apbMmnTk+1tlBRHnMlqRGbKkNqsb4IlT+kM5hYP\nmtnubyfWpOQ8iW2sz1BuNTuVVKbFtjxfYqujTHuLFKbAPoYIiitK00YRkLFw8i1WjisEHKrl84Xk\njyErVdnInqqq/JkSHW3GHmnmx7M7HcaDRjeS2UaWUtgISlJBTYG6iVXD1bwkyovJ8LIcRNTpNGhT\nIlUp8+nzj9uRK1EmqqLdcFRltSA/VFzVuvyH5DK0vF1aEttISylp4ov0gt0x/TbHjuKwNyyStA/p\nvdcw2G6ZbceWGywXLLlRyxRiyzOFUHt0IqaJbMWkf9Xq+Rl75XzyEYylXzF6sVwi46ZrT7LC2UQq\nepgTDPiNOMOOIp0rTpC4gL4OkAJs3ILzd0pWoKN7w1PwuptRrkOpSc050j1N3LCMp5hqUCrxIUvO\nlDS4t5cbMi26aU+e64t0rm0hFLmBp5xhl1pJQpC6v/SK5ZjOY/mT5h5zHGFL4PNvXpurZ3w9darY\npXD9wr839huDx6cUja21pixYyVfZSca9QtSjtB0s/SMdRFwmm35TXpaJ0+oLjw3zVEKanRHm3FRX\nW1lBKQnzQ4nSpAUkh0kEq6Gw8f8ACXL8jKGVsmx6xmOmHIExioZXzBTZ0NjMFPlxhJQHlPKgLhPh\n5iU4y80qClCkJaUAlSFFQ8jucixxuPMHYxmcW4NtONsB5uyxmmt0i8VuwzFVs8pmRMjeepF3j1bm\nzLL0WKbkTQqsfHuImeYqN2jl7PSrpoicKwqroaixFxoTsaFLlzW2X2nFtOqmCzjDyS8AthAADaUl\nDibAlxRAwWfyFAdqWYK/HruZ4FYzXl2g5Ym1OmTYcabBZy8SqHUqa8Kc4Y9TfXdU555MiK6FuNtR\nWEOKGJJc/pActv8AIPLndaJV8R4IrvKRNq2rAOKcXVmTjcX02yStiZ2W1Tsm0tllsdgtsze5Vi2T\ntsnYLIs5kmJCx7L7OL1qqXRV5BdpchpqLCZpjpMOLFQtEZha1Bbq1B11xx1x4geapxwlSRpTpFyQ\nMfwxoiKXnyiT5tdzNU87QkNZhrtbmMv1upRIsR2LAjNLgw4kSFGpra3PYmIkNKGnFFxzzTYDOwc8\ndtm5Hmqf1nDmCsVxXOVQa9RMpVbHNdt0bXYg8Hd/6Qn1spTOTucoeKtVrsx13NjVk1ZmEVQXOnHQ\nseuUrriKbWHVKrLLUWHHRU222n22G3UoCUviQXmgp5Wl11zdwq1Nm/uoTzj2ieG8L2Tw9kzK9mSs\ny8g1GXOpMyrS4L0t7z6eaU1AqDjVPZ86DAjAIhpaDElJSC9JdT7mEsxzz3W2YHp2C8pYb5fcxKYz\nqrrG+Ic05FpE89zhiOgOHovW1TqtvhLfCR0nFQS5lQqxLZBzp66g4XbtTrkOT4dlqqOyKaumyo8S\nR5MMtRJLzK1SmGvvhlLqXEBbbZuWtaVlAJAJBsKFW8PKZTMzJznl+s5loqqnXWanmOgUyosIy9Vq\npoDL1SkU9+E+7HlS0JSJ6okhhEpSUrWlCr3mth5xo/MrSkYImcXcu3KTy3WbPuNMlcwI8vGMrfHf\ntceAlW7B3bLQhI2e/WN8yp9WfWJap4/p5Y6EQlnoLNo1w4+rC3/RasmcpinuxKfTIEh5t6amBHdR\n5ykXSVuanH3FJabK/KYa0oSo7JJItPVfDxeXIFTzdHzBnDPecKXl6bTMrrzdWoEj7MZk2f8AYoPs\n8GlxUOz5jcQTqrUPOluMNaVOoRr1hnnIz4Tmi5ms75ybMPsaCvlxfOaTBC3bM/2dx3BIt6zjqAFo\n0Ii0aqx1MhoUjxBummkSTVfCUoioImFz6gqdWnZ2ny23pbiGmwAkNR0EMx27AAApZQ2CBYatVsO+\nScqoyj4Z5eyoHvapUGhJNQla1uGZWJYXUatM8xwrcWH6jIkFtSypXkIbBItiuUc56VSAbX9a3MQf\nYekA2PftsPx9eBclqwcWkbtyAra/VR4/yw5h4OQacysgrfjJTY7FRDZSoD/D441PAAke2OUB2R8H\ny0HxB7B6a1r5+oe3F6ErzH5oVwuKT0NzpHxtvhdzC2YqKEWrgMVFoGw4SoBZv/yd7bnbClF0BF3K\nXgVEAH12IAPbfbv5/LwIcVHGVJZjujgLKfTj+Hpx89sMq5TU2dKpxIJaYDxB5tqRyOg3B/IOM3HQ\noxZaHYpqn2HjWlAEvp6hv5eewb4mjOlszkkn9YlP4pt1+vqeDe+A9ap5k1rL8htPuxnHLkbgbNqH\nHHFh/PfGtUwEkQIHYASEfUO46Ht/EQ7D+PcddLQk05lfBLgGw42tv8/h88dUuorczhWYy1EtNxXL\nA3sLBKtgdtxfte/XG9usX4xxER8D2/IB9vAhruP4+d6puoU2pBAtcC21u/8AH5W74ZStmpU2Ywkh\nSQ6EKAsdwbkH83/nioIKip0D32Guw/gPb2+X/MeJYtg4Svix5/NvhfbjFGthUTLrDMYWIfbSANrB\nRVf7oO23x/lt+AP9oP0Hiz5rf7x+if8AqwqWmd1/n5YHKvSJjAO9dQgH47Ef8df48cJ5Jvaw7E7f\nL8/jhoNx7wOx5H87bfn0woSEADuPp7evn+/8B88QubkG3e3px3ucTtgWJHB/jv8A4fw6YPXL/gdv\nnWcnox9njl0wGxgW0MqpYeYjIz+hRUy7nn68bHRVYbw9XtkxPv01kDLTB0I1GOrscdGTmn7Roumc\nSkOCJwUlUyBCSgJuuc+phKitRSEt6W3VrNxddkhKBZS1JTbCTm/My8rNxn2ssZtzQ5KW+ExMp0hq\nqPx24rSXnX5q5E2DHitlKwmOlbqnZbwUzGacWlQFgq39GtzR2PmFzvywpxFGhcvcvFAeZNu8bZb2\nxg65I0lo7pxCWGs3N0zCvu4Z7B3iEuLeXm3NfjEqkWSkX7pm+YHiz2Wcv1JcybTdDKJUFkyHkuPB\nCFNAt2cbdIKChSH0OhSy2PK1KJBBSVur+MOSY+T8p53L9Tk0HNlUbotNeh0xyRMZqS26gVRJtOQ7\n7U3Iak0yVT3I8ZMp5U8stNIcacD4i+d+RnL+EZHA6UbP4uz5WeZwXDTBOROXS4Oci0XI9kj7JHU+\nYpsHLPoOsvRs8RZpeLinbJzGItjnfJLovDJovysuZNHkwlQ0hyPNaqIIhPwHTIYkOBwNLaQsobPm\nIcUlKgUgXULK2IHVF8SMv5qjZikGLXMr1DI5bXmek5tp6KTU6TCehvT41RkstSZjfsMmFHffbcQ8\npYDRStsFbRd6d1rkxvfKdyC/S1s7zfsDZAmUaByt1C2R+G8mscgy+IclV/mIj3tkxlkpkaKh31bt\n0cylGhjKMEpSAkTN5Nmym13sO/bIMLdJep1DzOh56E+4Gae04mJIS+uLIbnJU5HkJ0pLbqbi9tSD\nYgKJQoDGJniHTM7eLXgZKptLzRSYjtSzfOhO5hoztKj16lS8qvMRKzR3A/IamQH3G1gB1TMtsLZW\n5GS1IaWoCfQlMMYn5uMiWfNFcg7PjKgcs2TrBa4+xRrGUi28dP3bFGO1ZQ7eRavG6a8a3ujtyi6+\nECqAFVBJZD4iihamUmo32kuRKbQ5Hap0guhxKVpAW7GYKrKBF0hwkEC43Hrg7/aIl1oZGiUihS5M\nOtTc70aPTnIrzjLy1MU6u1ZLIU0tC1JcVT0JUm5SolJKVWANjvoluV6p4v8ApG+YWFzdW4a21nlg\nuC3LU1jbJHR8vDTGS8155YYJx45OxlWr5i+cDS2FytzEFEVDHQb/AFlE5BEq5SeWqe1FrVQZltod\nbgPiGhLiUqSp6XLENk2UkgqLQdcG3AuCL4TvHbOE+t+F2TKrl2bJgTc5UpWZH3YTzseQzTMu5eXm\nSqIDrDjbrbYnuQYTpCkjUrQQd0nlbhLlWcZ3tt0qrfPPLNhOQgMjjQIGPz/k99QpK6WiXnZqNhIS\nnxcVU7U6eoncx5I+QnZAkVXYaQeRrF9IkXftkzKMem/aEp0e20+GoOezoTNklhT7qlqQlLSEtOqU\nLpCVrVpbQooBVdQGPoCs51bybTYUleVs5Zjjyaf9sSHcq0RqqMU2AiLHkSpE95+dCbbUEvKdZitF\n+XIZbfdaZKWlqxponJJzAXrmAyxy2LQlapF2waa1SObrHkO2RtZxlh6tUd0i1st1vl9Ej6NY1Jso\n5ZHjZOPRkl7ASQYDDMnYLnFC83R5ypQjBDbLsVDyJ7jzqW40Vtg6XHn3rKQGhqFlJ1ly6dCTfZeq\nPiTlWNRkVxUqbU6ZmP7MeyrEpUB+bWa/LqyFOQqfSqXdt5yevQ4HmHlMJilp4SHG9I19LOXPlhXk\n+SX6UvCEDmzlstrSFyTyEzr/AJgozJwNeXeHqqU3cLNO2h1kew16Ik0I2BYKjGzDFnWHU4vYkjVq\nJipaTVQRWL02nlukV6O3Lp7iW5lGUqcmTpgoaDrjjizIcbQoBCV6VAIKy5+rSlSuc7zvnJK/ETwa\nrE7LecYC5WXPE2I1lV+i+ZmyROeiQoMWI3SIkuQypyS+yH47q5iIyIZEx9+OylakgHCvJznrAnPd\nTsGOKPywZyttkwZf8o4/Nkl9J3rlpyniyfw7cJ9hkmuyjKETk5M6MJGy8hSnC8G0VaW2LbFX+ptl\nG00mPj0adErCY6Y9Nmulh6Wx7UovU+RGeiOrTJQtKAokJQpTJKBZ5IuQCF4csw+JOVcx+GCa19q5\n2y1Aj1ynZfq32I2zTM5USuU+vU+K9RpTDsksMpcfejNVJtMlaXKfIc0+YsLjkQ4H+jqy3m3E+Ic3\noZV5b8TYryxdbPjCrW/OOWxoKSuSK7Jx0HGUJaOCuTEk+tN3dvVnNVawTeXZmi4mYk7E/gEWzUj+\ntBoMmoQjJ9ogx48x1bDL0uQWh7QytCA0tJbUrW6pd2tGsFKVFwosAo9nPxdoGU8zPZaVRs21qtZZ\njxKvUadl2iCpLVRahGkSXKgw4ZbDIi05tsImmSuKsPux2YrcpS1qbhNc5K81TuYc04JshqNi+Y5c\nP2llM+3nJttSgMW4kr9UlGkQ9sdlt0fHzSz6OlZCRi2tQa1uImpq4LyrBODiVxO4FrSjUma3UpkZ\nfkxlQmHTPfkuhEaK22oIUtx1IWVIWtSA0G0LW6VDQk3NjuYPEHKr+WMtZkhfaVcj5rl0wZTplGp5\nlV2vS5sd6Q1Dh0952Mlp6Oy0+uoLmSI0anJYdMp9ACPMGHMRy+X/AJacqpY/vqtalDS9JrGQKbca\nPNGstAyLju6sjyFSvtFsRmUcpMVuebIuQbquI6PfNXjR6xfsWzluYpp59PdgQmo8gsuKLjbzLrDn\nmsSI74KmX2HbJK23EkkakpUCCFAEb1skZxpuba5UavS0To7LcedTKhTqpF9hqtIrFMKGahSqnE8x\n5MebEeQA4lDzzS0LbdacWhacBVJYFG+gEdEWOHvrRv8Al+ncNhwHeZLTy07XU0g/UdfXf69cadS5\nTU+KiWLHRJfaB7aQng97W9N7DblUcpTPSn8iYuhD038MPA/p+fjXjjzzSYjbfGhQ7jhZuOeN+L32\nxSj04s1qsVCwBejKCT1P6gA/X+IOESBx2uYQ79W+3fQBsB1+e9a9gD34szEBT0dCQT+rO3G+38vw\n4scD8qTFtUSqyXybCYpQKr7CxT19fXoOu+FKCoaE3vsN/MB9v8j27/Kk4gocUm5Frgi/S3T5fx27\nFsQ41UaRFeJBQ4srF+PdUtNuTva/XnfDj8UPl/xB/hxHYev1P9cceyNf7v8A6f8ApwLz9zn2IiPU\nOvfex7fh/H19w4v8WsABc37W7/H8OnY4ooCtrbg/n436W/zwqT/cDfnXf8eIVAEnte46YtJFgPnf\n646Z8pOGqOlylcy3NtJYBb82mR8bZVw/g/HGDJkl/k6FCOsqRspJu8pZKqGL38LcbvGqOGbKjVKu\nBYIeAXsT1wrKqO1PqwNGOlxWRS59SXCFTeYkxYjENYeWygyUqUZMhqOpLrySQllpvzEIK1HVe4Aw\nzxCzHUnM/ZQyIzmhWRaNV6JXsyVjMsf7LZqklqiussIolIn1pqRT6c8lDjlSny/ZZEpMVtIZCE6y\nvsrmgkq258fpYyTEO0rc2n9B0qSVgoxFVoxhJIMRYPRkYhkio5drIs41wC8a3SVdujptkCIKOFxK\nY52eVqFczNrQG1fogNaEghKVCLDCkgEnZO6RcnYWJO5x8/0HyHPCbwLEaQuWwf7Sn93lPKStyQya\n7mUsvuKCG0qcdTodWpLaAVrKkpRfSKw8qlnrNRw79ApZLo6aM65FfSH81BX8hJLpt2EYrI3OpxEP\nIOnKwlRbNWNhkol6qsoYiSIpfHUMUCGOFCnLbajZLW6UhpNcqV1KNkp1OtJQok8BLqknfYW7Yb84\nRZtRq/8AajiwW1uTXfCfIvltMoK3XUsQJ70lptCbla3IjL7YSkFSgdIBJsYhXMGZuxNyl/T1L5Zp\nFwrHXaMPVgZmzRMnFMrXZY7m7lLLKvq87kUEEbOx+xrJBzis5DnfxhGdnh1DvSnlkCKRsxJcSn5z\nVKZdbu7Fb1OIUlLqxU1LWWyoAOp0OIWXE3QA4m6gVC96p5ky3mHOP9l5ugVOnzVohV+Z7PCfYfdg\nRFZFjRo7UtDSlKhu+0wpMVMeQGni5CkANn2dWmlHI2LiPwj9KTY26hkF2fIBI1hu7KJinbu73zA4\nei2p01ChtNT4kaJimLo3UmBgMXpEwCaQopgZkIJBRSFISf3S9MioBBtcG6QRv06WvjQ/EyK27nDw\nTbWAUy/EtmS6gjUFppuWK68u6TsRpeIN+irEEc9qbbkyppZc+jZzNW5OPGxfSZc7vJDzS5PaxgGb\nqxiWBcZ48wXZImSRDZR+0c83e+2FQAExF3jNRYehf4xEmx2U0JVAlNqT5mYarSahIAuClMKOxDWh\nQv8AtTH3l9blJJ3vj52p+Xp6qB4y5dmsPex+DHh74i5PoanSFh5zM9ZqeZYshomxHl5ZpdNii4BC\nHQjdJSTR+G5eavjKqZ05hIrlsi+bnNUz9KJkvlLpWOLYxyDYscYhYwdlk7S2utlpWM52tytmttxl\nXaERUhtMq2p8G0YhJqIOXgLpLBI8BphMmeIKalLVmSVSmWHQ+uPEShxbnnLajrQpx15RCWvNUGkA\naiCrGl1PN0+sP5fyqvNzuRsvxfBGiZ+qFUguUqLV8wvSIceEabDqFXjS2YcGnx0LkTvYWVVCS455\nOpDekptrzNV+QyNl7/tEGHsbQ76w5utL3lPv8FU4GPWk7ZcMUYrlqlL5diK5FtE1ZCWUjyScHNyU\nZHIrun7YrdJNBwouikqaqiVyTnSFHQpcsvU99DSElTrsZlbDklLaR7yyAUrUlIJIAAFyAc3yM5Fo\ncf8AsrZprD7UTLzcHONIlVCU6liBArdTaqkWiPS33ClpgOlL0dp51aG2lFSlKQlKlJ5sYFh5+s/R\ne/SgxVih52vS5ct/R7ndxVhipSClU276+3J+yVdRku2ZSCSTxqs2fNDuGxCOW6rZ2gKiSiShl6E2\n4nLOY21pW2tEikLKVpUhX+uWsXQsJULgAgm1xYi4scbVnKZEe8cvAydDkRZcZ6jeI8YPxJDMlhSk\nQ40Z1KHo63GlKbWtTTgSslC0rbXpUFAdOcK9Q86n0OBzCJhD6F60EER2JtFxLzGgUNjsekoF6Sh4\nKAABew64ZIBvUMvpO5OUQQe5DU8bfI9uoxiWcGiMk+Nq0gAI/tJKQoAWA11PKahwLbqT3359cctb\nyKg/RVfRqAUxg6OcvmcU7GMACckhj8oH12ATFBRQpTa6gAxwAQAxgFYB8vLlCTuNdQqg7XN4xvvf\nm3TG7qZ9o8cvF5YAKmck5DcHBslLdXuD2/ZKhvewJF+OuuV56LNzE/8AaBaRG4TrHMZkZzMcqGTY\nvCFlC/HSv+N8ZOqw7yMsyZ4vna1eZVxRFpuAu54yElkwcKs2ij1pIIgRoq1TtAlZwSiG1PfcVT3h\nDc879fHirbMggR1tPLLPmIeKEL3KRqBGx+e8qCQqi/2ZZcjM07J9Hixs40dzMsM0oKpNXrseoIpK\nXHK3Fm0thFVEWTTA/JjkoS6sNLZUS4ngNzfZ+ueeLBhZra8F1fl7i8MYOicUY3oVWi8mxjImN29k\nsVjgXhv6WJmdtUi2K+mJdpFyJn6zBdokoRBRZRJUwIlTqLstqE07CbgIhtssMMMpkJAjJdWps/3p\nbjqgVLWAvUUqANr4+q8jZJp+W5GZ6hAzPNzc/mKozavV6vNfozzqqw/Baiy2v/YMeLAaXoZjreZD\nKHULWCtKQpN6XtjmTYrGMP8A/IU9+2xDQ7EB86/X29fJLKXZ6UpBt7Om4A7Dg7+v5AwTodTcgZWW\n64SFKqjgTqt+2lO255sD+O/GHUpxBRI2w3r/APrr19g/kOuA5QdChbYH16KuLfTj69cacl1ClJRc\napEdKrdSC0Dt3O5sLdLX6nESj0L9OgExN/n1B7/j/H8+LCXNUllSr7H+X06b/XC9Ngey5cqEZkaV\nLIV7vJKnBvwN+p9NrHcY07FJAB8D1CGg/AP013+foA+OJAkPynO1gbjpt+P0N+2I1S1UfLNMSu+q\n+gj3rlRUVdr8H4DCj4o+/wDEn+PHnkj0+px59sn0+pxCR0Jh9uof5+/EBJuodzv8r2+X+GDyUABN\ntwbXsP4/j8MbdlD1D9Q4j06jc+ot8zb8Pxx1q0ggX5vc9Nhf539MWCwnK80lKrGY8qcvFkzNR6jS\n63XYnOl3xNcLDTY+Hqd5nFK/WY69v69NRDlzE2CwCtGxKCib0CyJlRR+qCoosctCVUGWZUiE5KZb\nabQmW7HdW0ENvLKG0vFC0EpWu4SCFe9fjfCLmdnJVTn0Ci5riZeqc6oy5b+WqbXIESoPSJ1OjiTM\ndpjUuM+hD8WLpdfUFNXaCQrzAkJEQVzZmRaRnZpfLWSl5m0Y/bYns0qvebKtJ2PFrOPYRLTG08/U\nkju5eiNoqLjI1CpyCriDSYRzFqVkCDVEhKntUouLWZMnU6yIzii+4VLjhIQI61FV1MhKUpDSroAS\nkBNkpANpy3l5MKNHTQaMmPAqa67CjppkJLMStuPPPuViK0lkIj1Rb7zzyp7IRJLjrq/M1OKJjr68\nXOWqNdoUnbrLJUWoSU9M1OmPp2Td1WsS9qM2Us0pXoBZ0eKhpGwqM2ak49jmzdzKnatjvlFzIJiX\nlb7ykNsrccLLKlrbaK1lptThHmLbbJ0oU5Ya1JAK7DUTYWmiUynNSqlUmIMJmpVKNGjz6i1FZRNm\nMQQsQmZcpCA/JaiBxwRm3VrQwFuBtKQogkO18zPMbkCNdw19z9mq7RLyoR+P3sVb8pXeyRjyiREu\nxn4ynO2ExOPGrqtMJ6MjZxvEuElGgS8cwkjpqPWTVdK2/NnvkIenTHW3GksFLsl5aS0lSXEtELUo\nFCVoSsJ3GpIUfeAIXKRlXKNLZVIp2VsuU6VEqb1UTIg0SmxH26i+w7EfqKHY8ZtxEx2I89GW+hQX\n5DzrIIbccSodwl0ttch7VA161WGCgr5Fs4G8wsRNSMbFXODjZdvPR8Nao9m4Sa2CKYzbNpNM4+US\ndNW0o1bSCKRHaKapaiHHWxIbQ44hD6NDyErKUOoCgtKHACAtIWkLCVXAWNQFxcMkqFAmu0qXKhQ5\nUmmPuSqXJfjNPP0+S6wqM7IguuIUuK+7GccjuOslC1MrWyo6FKSZzQV835BuGNahjJbKd2vtRWUL\nhmsUle12S1VZzHyj6/LkxpDQ6juSgVWUyjJ3RYKy3ZghKEfWFTpeAs647ZEx92I3H9peeaUoRW2S\n6440QVPn2dKblFlhTp8tKbKCnDY3VgfV/wBGaRCr9QrCKJTqXPQk5imVJEKJCmodZZpiPtmQ+EMy\nw7HUzTk+2LWVslqILoKUY3QfMLnuoL5FGq5ty9VVsxkkS5cGv5GuUAtkxaRXfKyhsgDHS7Na0uny\n8jJfaC84Ll44M/kUXCpyPHaSs8eVNaRJU3Lktl50mUUPuoMhKiVK8/SpJcKiVlRXcnUq53VcTU8t\n5VqEqiRZ+XMvzmqZDCcvmVSKfKTRvIbQiP8AZXmx3EwUtIaZ8lMbQ2gNNKQlJbbUltjs15iaZEQz\nO2yzkprmJF6R8XKra9Wdtkcr5COQiEXQ3VCTTsRliRDVrFAY8gcp4xshHqFOzTIiHUiXJRNXKbkS\nEvrCHBIQ84l/UEBIV5oUHNkgJNlfdAB2FsVqHl2hy8stZel0SkvUeM/Iiqoz9OiOUtTSn1vls09x\npUVSS66p63lXDqi6khw6istue84ZBG7q3nM2Urkrk2Uq8nk0bRf7PO/0hSNITFGlPrsWSk3BLO5p\n6IijVVZcroa8iPwYf6mlonEy5ctS5QfkyHRNabW6XXnF+cpoWbU5qUdZaBIb1fcGybDFKFl3LzSK\nP9l0Gj045VqMuPS0QKbEippceoOBc9uCGWUeyInLGuYlgo9qXdb/AJirnHzPN+ZY6VqNhi8uZLjr\nDj2prY6os2yvNlazFLx85aSUe4otVkkZMjuvU5wwmZdkvW4pZrDqtJWRbqNBReuCKQIlS2nG3DIf\nCkxCwwsPOBTTJBHktKCgUNgKUPLSQmy1C1lEE1Ky9l2pM1OCuh0dxmRX2K1VIyqbDUxUaolbbn2l\nPaUyUS5+thhQlSEuP62WlBeptJEdNfLo7q8BQnVws7ilUudk7JUKevPSatWq1gnxaGm56uQKjo0V\nCzEwZgxGUko5q3ePxZNBdLK/V0eiB1bwjxUea4WUeattorUW2nFlIWptF9KFqCRqUkArsLk2GDEO\nHTVV7MMwQISajLZgRps9MZlM2bEZQ6Y0WVKCPOkxo5dc8hl1a22vNXoSnWbyVLNmZGmVnmb2uW8m\nNsyKuyzR8tNr3Z2+SlJYWScaeRVvCMoSyLO1Y9BGPXWWkVBcsUiMnAKtSlS4somSlGLJ9pk+1h9Z\nVJ89wSCsgAqL2rzCSmySSrdIAN07YAu5cy+w3WaCqg0ZWWzRmW0UJdKhKooZacL4aTTFMGGhCXlK\ndQlLI0OqLiNKyVYS33K+S8yWg96y5ka8ZRub1i1YOrbkO2TlzsazFgRQrBgeYsD1++KwYkUWKxYJ\nrJsmYKrA2bpfFUA1ac7JfkPLlPvSXQtKS4+6t1zQknSnU4onSm50pBATewA3wbytTKJSMv06HQqT\nTKLAcQ44mDSIManxPPeUoPuiPEaabU88UjzHilTjmlGtZ0iw4cl6GRky6ETOOodD/aEe3z8B8x8c\nWoruuaVqJsGLfSw67dr22GF6vU0xsusx2uVVVlSgOytdySP47X743nWAHbVPYa+EAm/4PTx/kO/t\nxCGgYchzg+adJsf9p/Q/Q+uDKaitGZqTCKiE/Z6CQTexMXkjvcD4DfCkipTCqACAiAAGt+fXXoP9\n+td+4cU1tqQWlHYKBN/wvyfS/T0thmYlNTW5rQIIZcShQ7XCjufS29/hbnHxwA6YAAl/f2Ab9A7e\n/fwA9h7jvsO98SMOFpxxRBuU2v09DtuAPX03AFsUK/CE6FBYR91uQF2HbTY3AtxwOR8+FPSHuH/E\nH/y8fvOPr9BiP7Kb7n6J/riBb0Y+x8mEA/IRH+/jhYvwONz89v5YLhzSQOQR8vT+fp/EZcfkp4N/\nW38MQuO/eHUi4I/H473/AMeMdX+TIAH6Nf6Y8RABEKDySaEQ2If/AIl3e9D6fPXDLTP/ANCzR/8A\nYpP/APcDjBfEG/8Apg8AACReqeI3/wDh7XrvgD8qPLbj/JGOuYPmKzk8ycGDuXFpjqMlKphRrArZ\nZypkzLtgdQdEx9UpG0Rs1XasxbMouctdwtsrBzScTCRjdq0j1HsokshQp1PZfZnT5ZkeyQPISWog\nQZMiTJcKGWGlOBTbadKVuuurQsJQAEpuoWc895yqtGqOU8o5aboxzLnE1Z5mbmNySihUSjUCIiTV\nKpPahPRpc11bj8aBT4DMmMXpLy3HHg2wpKp3nDlp5dOWXmUp0FkaX5ib1yzZbwRj7mFw2egx+Oaz\nnuwwOXYP67SaTbSWxq+pkBOQ1hY2Gs3GVioWRcqmi2DyErZXEkqyZzz6fAgTmUyFTnoEmGxNi+QI\n7c1aJKAWWXfNCmkKS4HEOqShRukFCLqISEyhnLN+b8pVR6kMZSpmcqFmWqZXr32s7V5mV4j9DklF\nSqMEwXGqhKjvxXIsunx35LKAH3ESZhQylxyzsV9GLiW288XJpg+tXDNMHg7ndwTOZnpB8iQ1eruc\ncZPI+m5HeKUfIDb9nxrrtzBXGmxqcnMR9bahJ1mUcjHtyPUEJNckmgxnatSIjbstEOqxFS2S+hDc\ntghp8+S+PL0FSHGkhSw2NSFE2BAUUV3xgrkHw38Ssxy6fl2TmLw/zDGy7UhSn5crLdYS7UaSyKnS\n1e1e1tok0+ovLZYelrLMxhHmqLSlspiGP+UDkHvdV5wslxWbOZeTw/yWUnl8kbZcIqo45aWDMFzu\nGRLpQclNMbVeYIRtAVW3ykXUo/DMtbpVN1XEJaSn74zsDVBs0U5ZpNHfFUkJkz1RqaxBUtxDbGqS\n66+8y+GEKFkNuKS2IynFXRqUt5KxYYkqfiL4mUn9AKQ/QcpM17O9YzVHiwZEyrLj0Kn06lUypUld\nXlx1FcmZCZkTna+xCZKZRYZjU1cVxS1AyYZ5J8dMPpCvo+I/lpzxzEY6w/zmYanM1YzyK0lqvWOY\n/FAtKXk1ha6g6skDEGqryRbSVbCJcS7KDBlIwM7JMSpLnQRk17EWjMIrFE9gmTmItTYXKYfCm250\nazUgOMlaE+USFN6VLCNKkLUOQFERmLxOq73hn4rfpjlrKdWr+RqvHy/VaUtibMyjXCqpUZcKoNQ5\nUj25ttTExMlth2SXGZUVl0lIUplNZcPcsXJux5PqBzi81GQeY1GOsHNVkzl2f49wg0x45n54ISv1\n+yRFuZz98YKM6+yrca4s01eDvBsUpanAQEJWI6HcLyUmpDFplMbpqqhUHpgQ/OfiLZihnWoNtodS\n6hbwsjQlTindWsuEIShKSVEk8wZ6z5JzyjJuTqZldUilZVpOZGqnX1VNEZhyXNlQHoEmPT3krk+0\nvNw2IAaEVENJkvynX0oabTOpT6NjH+K+bfnSxxmbKFxT5ZeR+hx2Y77fKVDQpsoX6lXpnU3WH6PU\n2MogtVInIN9c3JlEOZOWajAxisRKPgYolds0WkbtDZZqlUYlyHfYKRGTJeeZSj2h9p7yjFZaCh5a\nH3i6ElShoSUqUQAQBbp/i5VKhkXItXy7RaaM3+JdcXRqXTKlIkiiUupU5U5rMFRnOMLTNfpVN+z3\nH0MsOe1PB9louqLbinAnzj8r3L9h3B3KTn7l5ueXbRUubFDO1kQiMvtKWysFGi8YXSuU5hUXxKW1\nLHyNkh5N/PR1isbZ4eEshWEXMQUXCN3azQ8Nahw2YdGmQlyVNzm5e0kNBxtLC20JbWWhpU4hRWla\nwooWAFJSkG2C/hZmbMtVzb4nZXzVEokaflSVl0OO0NU9cKbIqcWXLelxzUFF9uJIaTGeixnEiRFD\nrseQ8+pAWOdSJ/8ASXSY+Q6Dhv2Hf6d+/wD0HgM+n+7Q3Op1IJt8uevBONOpTpGYcxxVX0pEZ9PX\nZQF7evvjex32+G8BErlfzoSEN6+g+nv2D+PHJGqNHsAbLWn134+V/wCuLrKixWqu4T7jlPivb8XS\nLE8fx4+G2FZgA4KiA7/qh0Ou3Yg9vy2G/wAOIGyUraSejoNvTUAbg9T0/ji9KQHYkt8fefpbiQRY\nk/qVKTvzft/W+ESCgposg/tmEo78++t70Hfxrfbz7cXnWg47NWOUpCh2Ow/p1tbC1TJqosDK8dSj\nd2QWiNx/3x2+BChc4Xj0nIJR9DAP8/8AD5633Dim2pSFBf7zZH8P44aZbTcxtTJ3DElpahYbFOog\n79Og+PyxgZPb5I4f6qAAGu4+BD9dCIh49A337Thz+4qb4KnTf6p9eL2+GAioKlZqbm2OhqA2lPYE\nJULXt6C3Yd7Y0NTiH1k5gDQG2Aj47bAfI+O/fWhHx8+JZTQK4qE/uAEDvsTb6dfrgdl+c4zBzBMd\nUbJkgpJ7JUtPPrx8h1wqTUAUSn8dYD58eoCIfkOuwBvXjim40UvrQP2bcfAEX+l9/TqcNkCamRSo\nclah7+pV77H9Yocn0AI+nbDjxXsex+hwT8xH5A/6MQM4AImEPQTbD5dQ+POv8j54lvY2PBO30H8f\nwO3GKxClIBB32F973t+Hbn0xmHgNeNBrj24vbrziLSSnUTc9efh+fTHXz6O1nUL7yi/SbYAlMzYK\nw9e83UzlUYY4c57yrAYlq067oeapi6WdFGenQWFRSOg2XWqRkxfHTcPY9JciCbsq5GWihp+m1+Eq\nXDivS2aclgzJCIzayzLW84Na7/dQm+wJuUg2vfGEeKq59Kz74M5rZy9mbMFMy5Uc7uVhvK9El12d\nFbqeXY9OhKVFjadIekOWSXHWgpLbykFSmyknPlVlLPyy485v+San88GCMO5/y03wDnTBHMFh7mUY\no4SsU7RZKxRt1wZY8/QzFlDU6x2emuSLNms0VvEkk26Me/d9T5DdmmKcp7NUpLVXiRZkn2KZDmxZ\n49kcW0pwPQ3JqAlLLjjR2DlkhQCSbkWXs+NQ851TIHiNO8N8zV/K9COassZlyrX8nunMcONUmoj1\nOzLFytIddkT4cOopKVORip8sqU62geUqyflwyJkyN5g+adrnPnHxBcudxDk9NT+UPmSvPMXUMl46\no+QJOdaztgp1W5hJgJChU/JTelSViiK7NnkEY+rWSQsDZhOFfOzqL+w35CJtREuqRnasKZ5dLnvz\nmn2Gn1LC3Gm5qtTLT/klaULKrNuKWEr1HeHM9Ko0jKuSHct+H9dg+HRz+J+f8n0vKk+k1apUpiMu\nNFnTsrRi1VKhR1VFmI/LjBpTsyI1FW7G8tsJTa2hZ+xpA8+X0OVpybzc4xy66xDyvZoqGfM5PsxI\n2+EiskLI5tZvWNtyJan5JBwo4lZVnFV2en1G6dyjjRE5XjvoSXinTgk1LjorGVnpFSjyTFp8tqZL\nVKDiEvlMxKg6+6rUTrWlLa1keaNKkXSpJKNUMtVeX4a/2g6bRsi1mhCu5yy9UMsZZay+qBKdpCXc\nvONuQqRCaLaEpjsrflRYwUae4H48oNSGH0J5T8qOQKLWuQz6VulWK41iCt2S6fylNseVeWm46Pnr\nw6rHMS7nrG3qkS5XSez60HCmLLS6UWi5PHxog8dFSQH4nACmSWWqPXm3HW0OvNU1LLalJS495U4r\ncDaSQpehB1K0g2TudsbFn2hVOf4k+D8yHTpkmn02bnp6qzGIzzsWm+15RRFiLnPoSpqKmVKSGGFP\nFAde/Vo1LBGOhnK1nfCdZ5mvoHbLYcu40hIHD3Kjlet5amZS7V1nG4ysEkGY0Y+Cv7xaRBCoTD48\njH/U4yeOxeuSSLBRFAyT1qdVggTIaJ2VyqTHQiLTZAkKLyAlhajJsh43/VqIWkgLsTqSbWIJxrOW\nWcyTMpeP7cah1iRKr+dqOujMM06Wt2sxm0UDzJFMQGiqew2phwLdjeYhKm3EqVqbWE86bveqQ7+i\nbxFjVpcKw6yHGfSF53vEjRUJ2MWtzCnS2H4uMibW9ribk0u1rknJdUfHTS7ROOevk1WrVyqukqQg\nORJaVl6EyHUF/wC15S1M6k+aGlRQgOFu+oNqOwURpKtgSTpxrlHy/UEeNGbJ7kCW3S1eHOXYkeor\njOpgrqDOYVyXITcooDC5bTOp12OlZdbbstaEoKSenXMBnfAOZucz6U3BKWfMS1ilc6XLnyzVnEmd\n5e2MFcMIZfwZUMVW2Arltv8AFqPYuu1+wSzGeq8nYljqsYSZjDMXyYvFEWyhp+XDl1mvwxLjhmqw\nYLcaVrSqOZENqO4ltx5BUlCFkONqVchCk2O+2Mpo+W8z5d8L/B3M6su1h2peHOa83Ta5l5MN1quC\nh5lqVZhPS4tOfS2/IfjNuRJbUYBLj8eQHmyGgVioX0i1Lisa8iP0TlFishUXKBK/VOdBJ/c8aSru\nfocnNOc8Vx1PtqnYXkbEjZ4GBnFn1cbWpmyTiLE4iXErDKKxbhoqcbXGEs0fLkZLzUgtiqBTrCit\nor9qHmBtZSnzENqu2HAAhZSVJukgh68Kas/VPE3xwrj9LqFFEw5AcRBqzKI1RaYOXVmK7MjtPPiK\n/LjIRMMNbhfjIkJakAPJcA4wl2Vyqr6GSL79wDXkR/D/AKa7Lp96O011Q8pI+dySO3PQfW+NwQfJ\nrdQnjZuRS2Vk7WulLZJvfn3TuL/HphSYRMVRXtsyXfXuADr8ewd/4dh4iR7qkN/uvDY+qh+e+Cbu\nlceRNRy9SVAKvudKFKF+vS/ztzfG5A4ikTx99LQAO99gHx7j5/L+PDydLyyL+478Byk+vS3126Ys\n094P0yAhR3dg6dupLZB9dvSx57YSrbA7EgAGiKDoPUdAAhv0HXcd+R3xcYVqROUTcrbF/wAbkDts\nNr9uMLFVilmTlRtFwlqcsqt/uqbVuPid743orAY7regBM4BrvoA0Pr379v8AHXpw6yQiKOdaD05I\n034+O5/pi9S6oFyMxFavdjSWkgngW80G3bcC4/nhWQwbKoGtiAa36h5D2EfPFRSTZSeiVG/e97fx\nH4/RkZcbdMd/q+w3Ynkgovyfjew22PO2ExyiVBYCB942+3ft94B7a/TyPb+FtDmqQ0VbBIHToEnn\nng9xfvhckU/yaDUmGwQp5aVHoTqeB7ep6et+MYKmMk3RIHkRAvfuPfYj/PWvb046aSlx99ZsRYn0\n4t8h1/jitPU9AolHit3ClOhBA+IUQfrf4j44d+s3v/AP8OKlkdz+flhh1u91fT/DEK3o5/bqH8hE\nR/h7/lxCtNxccj+H5/ngg2sJJQf2hex6/A9/yPTPjzcpChyPqenz+HxxIFAXSRe4/P8Alj0AAR0I\nFH/3gAe3rre+/wDD38cem33rEk2t1sem3r1PPbnHqSBcb3sLWJ6d99x36j5492GtdIdIgIHLoOkw\nDrYCXwIDruAhr33x0lJur1427fDbj629cVX3dIQu/CrG97i+wPfY/m+NhAAAMXpKJBAAAogAkEvY\nekS+BKGg0GtbAPbj1W6QOOQfh0t062+uI4t0uubn3vfBvuDwq3bc/H449AP6wB0A9XYd+oh4EffQ\ndgHvr9OOju0oHobjrb5HY3/l64hTdM9Dib2cQtCrcak7/wAbj44zIIG862U49x767CPn03rY6/Pf\ncOPFC1vUJP12PPzv87d8dRXQtL45U2pbavUBQtcG/T88YyEgdIgAB+9vWg0I73332Ht6/LjpKveu\nbbp0nptpt+fycQOMgx0p3u3IDqN+PeSrY323vjPQbEdBsdbH17b9db18t6+Xvze4A7X+h3/r+b4s\nFIQ9IcAsHEt355Cjud7X975c4MWEL1iXH9zfS2acDsuYekuq7JRJqG4yhdcPuWUm8XYKsrTEXKiI\nO5RCWiSNHLZBk+Yv4Z2hJuhes1FUmp0iVOdYjvNPSYqZbZ1N+X57sdSFEgh1LjXvakgEBKgpBCyS\nCbYRM7Qq1WaZU6ZRMwu5bnNJizvbE0mBWUyYzSFB2A9DqCkNhh9S0OKfZW3IbWy35bgCnAoic0nN\nE95j1cZxMNjeq4Vw/gvHh8a4Tw5TZawWKJo9WdzLqyTbmStdpWVsFwt9qnnJpS0WmUTarSblFtpm\nkZJZZ1YnT1TpkZsMtxosS8eLHaK1pbQpZcWpS1nW6464vW44oDVsALXKhGU8nM5TyzXp7tUm12vZ\njArdfrdQajsPzpjEZqJGZZiREJjwYECI0mPDiNFzy0FZLh1JSirJDdTX4nkfq49999gHy7a7CHje\n9D68UVAIllu/EgH0N/8AE/54bGl+dl1MwEa1UZzfgnywvb/08cgdL43tx6mie/JkhD+Ah6/yH+7i\nN8aZS7XsHAb/ABIP1/ni/SnPaKBFKgSpymuJPcnS4nv0P5tj1MwkM3J/uG7D7lD/AJd+OnAFCSv9\n1SP/AFEA2/r/ABxBCeVHdoEU3GqLIBB66ELI2NvTr8OmFAlA6iZvPQbsI+QHx/HXf/I8QoUUodHG\ntKR+JI+v59CchhMl+A5a4jyHFegJ0g9PTnjbfthtERSRkD9wEywAHce/cQ147B38/l24Kps47CR+\n6yTa1/2Un+Q9NucZ875kGn5rk7gvVJKEEbXBdWB+H8jheRbpM0J5MdMoiA/+569/l+P4+OKbjN0y\nli9kuKAI53UBt8B26W6Xw0Rqj5b2XIale+/EaUvp/wBxext6i/xtfCgBAwHANdh9R9R7++g7+O+v\n47rlJSWyeoNj6Abfn/IHkSG5CZjQsUtrQFcbXuq2/O6ev+WJyAcCb0Ou/wAvHnx29vTz8uPUKKC5\nbqLH4G5/PrjiYw3KRCuPdZcKx24A4+X4C/bDroPYP0DiDF7QO5/D+mIKIfeP7iI6/wDMIh+mxD8P\n5+A3+pH0OO3RpUlQv8R6W2H53/h74KHy1v8Av/yHffHuOXlLQEr5AsTbY268duf4b8e7Dt8/HHoF\n7+gvb06/THK3SlxCibJXt6A22O/4/HuBjIA322Pgda/kHtx+FxZXr3/j8fz61lkrU8yTyCpPz+fQ\n27Y2l30hvz6/kPH48m3F9vhi1FN20qOxCVJPO2ki/wDI9euPijsRAfQREB/XXf39Pw8cdKFkp7KS\nLj58/wBfS/fFWMsrecSbBTLygf8AhPB37gj/AAvt6QNGUD1EomDe/bWx/XXHSveQ0R0UEm/UA3t+\nem3GKjai1MqbdzpW0X0/8puO17gX+nGNxTAIFH3HW/n3/wAPy/LjlSbKWP3QT222/kf54sNyErYj\nLuLOnSe17f0H+Yx8c2imH+zof5D/AJ/TjpCPeb/3r/539Li+3TEUuRoYnKB3Y0m3/iQq/wCfwvjX\n5c632Ubj2+YefxDz50H5BxOABGP7yJA6dLWJ7cgfjgMpXm1xPVuZRjfixIBPw6fnpuNr4Z0gHyic\nADuHoOu/zDsI+w/nx+F/MQ6Bw8i/foPh2uOOMTP2ECRT+ppcgAf+Fwgb/wAsYogP1Uqeu/wjl18v\nvfmIefQR9fHHT28pS+nnNnt1G1/hybfjipTNsvtRD940+Y3pPPD1u3Pytt8cbGw9BEEvUSG7D29x\n0I6D1H38+B9/HhqU+50S4nj10/httviajueQxSYJBGuJJuL9Eqc4+Xf/ABxuOX+vb+xSqd/y1/ER\n/PjxBPkSSf3kD53+vFr/AF74llJ0VaiKGyW2ZgsL8BNvz1N8bEFAMmBv/EOX9BDQef8AO968jxy+\n3pc02P8Aq0n589emx57X2xLS5gfiB5SrXmvtg8f94kDr22/NsYLpgZA5Q/11CiIePJhH/p5Ht34m\njuEOtrN/daUO/wCyALD8/HA+swEuUyZHQLl+ey4Rze7yifgPxxqEpgfIa2JU0O/ffp7fw32DiYEG\nG93W727kG2xv6enfA1xpYzTS0i4bh01tVtrApaWN/pv3x42WH4TpUfHxNBvYh6h6/P8Az68evsgu\nx2+SEb29bXv8fp3OOKNU1og1+a4o29qSlJPoFpFj6374WFVAEUzCIgJwD22Ox8e+/wDOxHimps+a\n8kbhJN9r/dF/684ZmqglNNpzyyNT6UEepUspHp6+vph52HuH6hxUwd1nsPx/riBmH7x+++4gH4dW\n/wBO38ePwFzYdfz+fxOPzzoCAeiRfueg3A/O3PbMDAIb9w8b878aH5+g/wB4Dx+4x6HkrZHXbrue\nOD8P6bXwXsUcvmes9DNp4OwnlnMSla+z/wBoi4vx7ar19g/aguQiwlzVuLkCxp5EGTwWCbsySjor\nRyZEpyIKmLbiw5ksq9liyZIRYOeQw49oCr6dflpVp1WNr2vY2vY4Wq/mvK+XmYxzDmGiUEyy57H9\nsVSHTTJ9n0ed7OJbzRe8oONh0thQQXEBRGtNzMT6PTn4EQMXkl5sTaHpMJeX/KBukR190dVv94RE\nAKUe4iIaDuG7X2LWLEfZVR52/ub99r8/q7/T5bHdePir4Zh1lz/SDkoe6Qv/AN5qR1G/MvoQbn+e\nMi/R88+ggOuSjmtHQHNouAcmjoqfdQR1XN6T/wDWDrRO3XrfHgolYNr0qo2//ZyOP/LxKfFjwzQh\nWnxAyWdyQBmakblW4sDL3JPHNz8MYh9Hzz6dex5KOa7RiFMUf6AcmgBgHq0YojXNGKPQfpEOw9Cm\nh+6bUpotXLaR9l1C6T/8G/cjfpo6fH8cUWvFXw3RNdc/T/JnlutpUVfpLSdIWm1wT7VzYja97Adx\nfZ/6Prn06uoeSnmu2IGKP/3BZNDet9v/ANuB3DpNsA8dI7/dNrz7Fq4AAplRsFA2MORb5fq9sfj4\nqeGyni7+n2TPfYcaVfMtJ2ubjf2oHc336/HbAYytgLPOBRg2+cMK5Xw44sf15Suo5Px/aaIedTiz\ntU5Q0OFkjI8JL7OM+Zg+K0FU7P621MuQgOERN+kQJUZ7+8xn43mtKLYfaW1r021aCtIB07Xte1xe\nwIx+o+caBWqYVUGu0itfZtRaTKNLqUSf7OmQXPJ88RXXC0HghflFdgsoXoJ0KAEhj7M4L/uAIee/\nb2/APPFdCLCOrqHCkjvyL+lhfbBuXNK3a4zc2VDQ4na2+hPT4/jY264yTPv4J/X4QlH/AIfG/wBA\n9flrjxabB5Hd3UBfpsf577jb8PIz4K6VKVbUinlpR26oUD8wdvlj0VdO0yehkTeo/P0/AAHiRDX9\n2cURuHk7DtdJuDe43OK8moD7ehtAjQ9Tnwod/ddvt36Df+mPgVAq6SXbRkzdt996N+v8fb0Dj0sl\nbDrhG4cRv2sQPoNx19D0EAqHkVSDCBshcOR7vTcO3H8enIxkKvS6QANa+Gcd+fcd9/Hb+X5cepa1\nRnz3cb+dyLbfC/zt8ceuTvKrVJSkgITDlXtYAbLA4+P12txhSRyitpRJVNUpAEomTUIoUBEoGADC\nQxgAwlEDAAiGymKbQlEBGHyrJWkdVJvb678d9/SxwVcnBxcd43BaakAEixGq6TyN+CDbqDvfCRJf\n4aSIDrZ1h9/Uwf535D9NXnI4W86bE6GE9L2skg8dRvxbnrhRh1ZUWn09rUdT1VcP/hLyTx+bm25w\n4AuA9YdvuiA7/j4328eNh7jxUDBSEG33ge/Qj5fAC/4YZl1hDypLeoHy3G1EX4PvEdALfW/O2PPi\nFFUTgPcUwAPG+wD/AA767/z468shsI3sFlRv8f42H+A4xCZiDNclba1RUtA8cIVYbEWNz0237YQj\n91oYgeTnKIh8hHY79fbft+QcWwNUkKNyEoIHrt/Dc9/kcLK1KYoD0ZBOqTKbWrfc3Wb/AFHOxBuf\nXHqyoh9VTAewAG/mAeewD69xDf699ceNNAiSs/tEgfO/W19r/nrJUZ7iTQ4barBsIKx6JWL3+l/j\n8MP3xh+f6BxQ8g/vD6HDf9sD94fjiHmMGzj7GH5BvfgPw4q6LEWv6kn+lufpa+Djrw0WJ5AueABb\n8/H15HhRHpAPcOwgGw9vy9h7hv39vSkEg/X1xXQ/ZCgCdxxcAH8n59CBj9Nv0EYz05yp/SE0qiWt\nrAZFmci8n8tEsUbpD0ywSdWgLm7k74jEupa747TcJPahH2GHXZq3KsMZkXZq+7n40kmK5NLyEttp\nFVC1oSpTkMgFSUkgIeSSAoi4B5I6+u2PhT+1+xMqEvIC48STJQzEzG04tmO68hDipNMWlKy2haUr\nKU6wk7lIKrWG3aq/4b5iLghlZzFZpLDScxfeYCRxKd7zUPfqdRx/kFljVpjGtS8ZW8mwST0tPdxe\nSn7uMRkxWYR1oRi4C3IuCNn0boXns9Hmv/MR/wBWPjH7JqW3/s2b0H/YZG9t/wDY9L2PU23G9sSG\nk1jmqjsi0Gw3DJ8HN1iDmOVFslXXvMzETEOBcOwJKVlyw5Jblt8I6km1yj7tecjVheqDPys1kejY\nx/pUqtnjCvTtf3nsf7Zr/wAxH9cfvsqpf/LZt9z/ANikfK36na3G/F9iL7Rv+jbnCJks1ljeYWPZ\nV5DMz17Zox1zKRi0XkCsS+YqW+sl0iIlOyLp0+NVxYhFpVCgIox6ME9xxbYIIiNRyQo7sH7z2f8A\nbNf+Yj/qx++yqiRtTZx9fYpHNh2a5vyfUHe22hWl850qTGk1H5uJW3ERS8Q1q71ma5na0uaVdR1R\nwHWMlSRnULcZtgpNoWekXS8Q06m6O6nmT+dZyZW8jeZBgX957O13Whfu4j+uP32VUTe1Om/KFINh\nubf6kW6c8Wv0GON/0+7xyw5Wfou6PZp5rJZLp9TywzyCxWt8Jb7AlPoVzE8dKzEzIQ1+yWR2EzNt\nJFyhKnt8wWQMcxjOG7oF4xgiZ2W2s0rQ4hZCphISpKiAUsAE2OwJBF+9+1sfXP8AZYhy4rXiCqRF\nkR0ONZZDa3o7zKFrafq61JQXEIClJStKlJT7yUqCiACCfzDCb+tOO9AZIA/T/H2/LhASPcQN9nb8\n9/r+e2Psdb2qdJUSbPQkoO56BIv69h6epxkB+lLz3IQ39/v6a/z4Dj3yrug72UpPA67X9T+H4bcC\nWGoQBVu1HXbuLBX0+ex4xqBQDLIKb7AkYP1Ef8h29d8WAjSy8ji7ieevHPyvf19cCFSy5U6bJ1cQ\n3Qo9gQ5fr3P4+mMDqj9cRMGgAEzB7a7HH+Gh9fX8+O0IHsrqTvdxJHw27+tu/pitKmE1+A7clKYb\nt9+4d/G3ffnBnwJC0e0ZkoMNkWSRjau/lFETFextilImZnitXKtOqtiSqDd7a2NVuFtJCVq1TFbj\npKciK/KSL2KYqPU0V20sNlpTiWnjpQt5JNwtQUoD9WhYbBXocc0oWtAKkoUpSRfcDczVOczCfn0x\nBclR6e9pKHY7brDCl6ZkqOZRRFclw4ZfkxGZDjbD0hptt1YQVJVc7m/bWy1o5lmrmawW+Rxw+xo2\ngsyWjF0JjJOVss7aLBUrjj+sqwbJELFievRykC3pzqwy1llG4UNexxcmxgrUqyc36kytxclTiVOF\nlTOl9TKWbqUtTbjSC2BrYSko8vWVqBaKwUpWUlRyJUo0OPQmYamYaKkzVzIo8aqSKl5cZiOzKhVG\nSmQ4r2arSHUyDLEZqK0sTkx3WnH4iXEyTJXInRHsfL26jWqTxhVKlXGrpzD3avWWx3GPlnLfNSxS\nZtB3YmcPjQ4TeHHdIg7rQ3F5xdlte2UW343bsEJiSrUfbVTWymQttRaT5AGlaVqWFf3gfrwpQDVi\nwW0ONFxl/WhxqwUUBej58npcokKZHRUZCqo6oOw3o8eG42k0c3o5Qwp6oI8qqJmPRZ6YdSpQjTYd\nQLhaalONbH6P6IlZ2UpTDKEqk5q+V7rjey5BWxNZE0Hc1B2flporSHa011e02rSEjp3OjmbTuX26\nm5mYKAsyy0KVGIjxH00VKlMshw/q1OoW75SrEpXGb06C4AAC+VBWq6koUdNkg45b8U5DMepVBcBt\nQlMQZUaEKnHuhp2NmCWp0y0wypxxbVJbYMUM6Wnn49nSXV4ZXn0ekzDUpnbLHllnDOjYddZkdQhc\nW3aXcOq39WqSbBxVDRLxzI2uPQn7UrXbk9CFhntG/ZuXsktDr1SQrkvK1lUUpaU4p4J/Vl7T5Liv\ndOi2jSSVgKUULIQktlKllJQUqUcb8VEPT0Q2KYp5Pt6KSHjVITQDwEnzPaA8hDcdwsx0yIiPNeTN\nElqO06iU2+y1T3PWNWGFsq27FjS1ObitSnTOKmJtepO6YQ88Zig8k2TCIezc84cxjH60gmynDPUk\n5ohju27Js3BIy9KRF9nfW0lRWUAJUoo8saiAVAJKlGw2AVeyuQAMNVFzIa3R489yOiGmSsvNMCWi\nZZlCylpa3kMsJS45pJWxoPk2AUtSr6Q+ZUBMQRHuAaAfbff8Pf5D6b1xCGyEqABsTuO/T8Px77YJ\nuTkreYdJ3bTZNzwSb7d7bdNrYcPih7k/h/8ALxx5H/F/zf44s/a//wBT8P8ADDIcdmNvf7w/l3Ht\nwECTcfj226X/AA+Pwxpzj2pNr9j87G3x73P03x56dh0Htv5f3/8AXjooF9jYdvz/AI4rpfGk3uCO\nQDsdv5jnb+WNJkkFTD8VBBYS7AorIpqiUDAG+j4hTdO9B1AUQAdBveg13a9tr224vyTiol9Ta3Sl\nZSHPesFFIJHPG199iSetucYg3Z9P/wCiZiId+zRv27eP/wAvyAdvQRD24k8oFQsAAbcgf06/Priq\nJ7vkOfrFkoUf21X5va+r8CBvta3GQt2eyj9TZaENaBo3+f8A4Xn+fbv449S0NKgQNj2HH8uP44ru\nTXA8yoOLstCkkFaubXt97e/4/DHhWzIA7MWIdx0Is23bv7Al7/z18uOyhKiBpSTYcgfu37YiRKW0\n2r9Y5bzFEfrF8Fe21+gPccfHGsG7Mvxf9CZ9hAQH6o3ENiADvXw/cd/3cTeWD5ew432Hc+m4Ft74\nHmY42mYfMXYqKr61g7gH97Ynjjn53UEIiQB+Eggj1gHUKKKaQnAv7vV8MpOoCiI66t9PUOu4jvwN\nhJuOm2wA7825/PTYeOyy43YrKvMTcAqKugHUm2/bn8cZioACA7761/1147+/8PTtKDbZPrv/ABF+\nwxWXJ9/Xcfd0fK/X+VwOeMazq7KoG+3wxHt7a/x7D/HXbVhtvdCiOVgfQjt063/pgbLmjypLYN7R\nlHnbcEf5bjtjAqmkSm33BMB3/D2+fgeJi3d1SbbFwW+I67nvtbjf0wNTKCIbDpPvNxVWN+Dv/Em2\n4/E41irsQUH0SH+/uG/G97D8vXiRLViUW5cHzO56X527nfFJ2ZdCJZO6Iit/Q6vpsRthzh5p7ByE\nVORwtgkId8ylmIvo+Ol2QPY50k9ai7iJlpIQ8o0BdBP6xGyrB7Gv0etq/ZuWiqyKnQbKXwQPuuJO\n6UkXSb7pUCki43BBB4IN94Vy0yKYtDhUUvQXm1aHFtLKHULSrS40tDjaiCqy2nEOINlIUFAEGe98\nzWWcm1tao291jxWFeOGT9clcwPgGgyn1iOcfWWnwLHj3F9VsrRD4wB9YZtJduxfpADd+3ctg+Fxb\nfceeS4F+UU+Yk+6xHQRYgj322kL2O1goA8G4thepUCm0t6E9G9uS+Irou/Wq1Ma0rSpKrxplRkRi\nbEhKiyVtq95BSo3wMWV4sMdTrFj9m9bpVG2TdTslgixioddR9N0RCca1B8SUXYKzDAYNtZp9Bq3j\nZBmzVSlXRHbdzpD4MKErS240D7jim1LTpAuWwsINzuNOtWwIHvG4wSkLjvT4U9YUqTCamMsOF1wB\nDcxTBkoLYWGl+cqO0pSloWu7aSFDe8BVBMW4kFNISqqiUwCUuhT6TlEgaDYF6DnKABoCgc4F0Bzb\nIttgug2FkM9u4Fuu25N7d979VaRKWiCpKVq1SagFGxN+Sb9OpG57b7gYK18zbkbJcbW63dJ5KUgq\nazjE4WPQhoSIbg6hahBUKMl5MkPHsSy880pFbgKoSbfFVkFYaKboOFlXCr107/OJW7GaSs3u4kJG\nlI+6kNpUQkC6vLShOo7lKd733hhLh06sS3ojRaV7K8XVl5103fdcluNoU4tZaZXLfekFlBDYddUU\ngJCUpF5HnS3E2gKAnECgHbQbDsABoCh33oNevjzxyYg84JA4Qm9h3HwO9rbW2F7dBi63XVCnuPKW\nSXJC9JJJ2skA78nt/mcbxd6MmX+0AD8h2HqI9/X+/wDGERtlm2wJ+e5442vxe/pi8ushK4qCsBSk\nouNt/dubb7c/jhz+s/P/AD/w8R+Sr82/rif7WH+0P1ONZgVExh6fJh8iX0EfQB9f8/JTCSfh3/O+\nPoBb9+FHjewte4+X5+Ax90qD/q67e4b8DvXft37B7ee/p+0m4B69PT+Hf6fC8C3kpB3JNr9bG3f6\nYxAqvfRQ9vIdh9fXv+e+JtOnpa4v8sUw/quSetuP4fm3bH3QcAMHT217l7DrQ+v+fz4kCSQk9R/C\n9x+f6YpLcF3Ugmygbj1t1+f53x4BTiBQ14Nrew323+XcPy9Ncd6d1evI/A/W+Kheulk9Unbm3Hz4\n/wAsYqAYAEOkd7Dv1BvXb8Q2PbevPgeJEIuRttY9t7dPS2+K0mTpbVYm4UD1tuoG+3y5xgYqnQcw\nhre/UB8AHz9PIcSITZSepH9Sf64pyZA8p0dVp3NttgBbgHp+NseAB9kDQ/u+4fx7/j+vp4GQN7Ls\nOCOvX+pFvnioZdixufebPf024436327YxN167FHYG15Dxsf972Dx3DiRLfvDsU9QD8/z3xTem2Qo\n3OzgG3/ER2B6d+x3ONQ9YmU7dujv3D+8R9w+e9Dv04nS1ZCNv2z1HPS31+mBz0kl6QOhYSm2/X5d\nev8AK2PDAcERAC7ACe5Q9QD3+f4a9N8Spbu6lXdzYfX+Y/POKUqVoguI3uGNItfb+e5v1698ajCb\n4Hgdin27h/Pfb+Xn8pktkv8AA/1hNjbkfh0t+O/Ua/LtTSi5v7KE335JF/X5349cfEE4JFLoddHj\nqDXoIf5/kPHSm/fUbAgrv2sL/n8jEDc20ZtkEn9RpPPUWHPoca9nBXsUfupD6l9/x86HXt+W+Jw1\n+rNx/wB4O3Hr8wL7fC+B7k3RJSRchEMgc9Sbdem3Tv8ADHwHPoPuj3Ae2w0G/wAxEd/9fTXQZNyB\nYWNrjrvYdsQiolSGzc7pUTyN9z/TjCcwmECh0iIAYR8l89h9/wC7iwhsgrI5Kd/699r/ANMDHpSV\nBgb2S6Vbgnext8eb3/phOb4gfHN09zAIAOw8CAdvPqH5b9OJkt3DSdrJIJ/j15wNcl2VUXRfUtBR\n12FtPy+XptjSb4gJok6ddRgEe4a8APjf/PiVLYDjiv8AdsPlfn6fDFJySRFhMAm3mFagL9bE8/Ej\nnrjITK/WA2A6IUB1svsHrsR8/n3HWvTkNANEW3USfxO3x2+u/U4lXPUuotkE6WW0ADf90dB3va/b\nphy+Op7fwL/jxx5Kfzf+uLH2p/xfT/HH/9k=\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import Image \n",
    "Image('../../../python_for_probability_statistics_and_machine_learning.jpg')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Learning Theory\n",
    "\n",
    "There is nothing so practical as a good theory. In this section, we establish\n",
    "the formal framework for thinking about machine learning.  This framework will\n",
    "help us think beyond particular methods for machine learning so we can\n",
    "integrate new methods or combine existing methods intelligently.\n",
    "\n",
    "Both machine learning and statistics share the common goal of trying to derive\n",
    "understanding from data.  Some historical perspective helps. Most of the\n",
    "methods in statistics were derived towards the start of the 20th century when\n",
    "data were hard to come by. Society was preoccupied with the potential dangers\n",
    "of human overpopulation and work was focused on studying agriculture and\n",
    "crop yields. At this time, even a dozen data points was considered\n",
    "plenty.  Around the same time, the deep foundations of probability were being\n",
    "established by Kolmogorov. Thus, the lack of data meant that the conclusions\n",
    "had to be buttressed by strong assumptions and solid  mathematics provided by\n",
    "the emerging theory of probability.  Furthermore, inexpensive powerful\n",
    "computers were not yet widely available. The situation today is much different:\n",
    "there are lots of data collected and powerful and easily programmable computers\n",
    "are available. The important problems no longer revolve around a dozen data\n",
    "points on a farm acre, but rather millions of points on a square millimeter of\n",
    "a DNA microarray.  Does this mean that statistics will be superseded by machine\n",
    "learning?\n",
    "\n",
    "In contrast to classical statistics, which is concerned with developing models\n",
    "that characterize, explain, and describe phenomena, machine learning is\n",
    "primarily concerned with prediction, usually at the expense of all else.  Areas\n",
    "like exploratory statistics are very closely related to machine learning, but\n",
    "the degree of emphasis on prediction is still distinguishing.  In some sense,\n",
    "this is unavoidable due the size of the data machine learning can reduce.  In\n",
    "other words, machine learning can help distill a table of a million columns\n",
    "into one hundred columns, but can we still interpret one hundred columns\n",
    "meaningfully? In classical statistics,  this was never an issue because data\n",
    "were of a much smaller scale.   Whereas mathematical models, usually normal\n",
    "distributions, fitted with observations are common in statistics, machine\n",
    "learning uses data to construct models that sit on complicated data structures\n",
    "and exploit nonlinear optimizations that lack closed-form solutions. A common\n",
    "maxim is that statistics is data plus analytical theory and machine learning is\n",
    "data plus computable structures. This makes it seem like machine learning is\n",
    "completely ad-hoc and devoid of underlying theory, but this is not the case,\n",
    "and both machine learning and statistics share many important theoretical\n",
    "results. By way of contrast, let us consider a concrete problem.\n",
    "\n",
    "Let's consider the classic balls in urns problem (see\n",
    "[Figure](#fig:learning_theory_tmp_001)): we have an urn containing red and\n",
    "blue balls and we draw five balls from the urn, note the color of each\n",
    "ball, and then try to determine the proportion of red and blue balls\n",
    "in the urn. We have already studied many statistical methods for\n",
    "dealing with this problem in previous sections. Now, let's generalize\n",
    "the problem slightly.  Suppose the urn is filled with white balls and\n",
    "there is some target unknown function $f$ that paints each selected\n",
    "ball either red or blue (see [Figure](#fig:learning_theory_tmp_002)).\n",
    "The machine learning problem is how to find the $f$ function, given\n",
    "only the observed red/blue balls. So far, this doesn't sound much\n",
    "different from the statistical problem. However, now we want to take\n",
    "our estimated $f$ function, say, $\\hat{f}$, and use it to predict the\n",
    "next handful of balls from another urn.  Now, here's where the story\n",
    "takes a sharp turn. Suppose the next urn *already* has some red and\n",
    "blue balls in it?  Then, applying the function $f$ may result in\n",
    "purple balls which were not seen in the *training* data (see\n",
    "[Figure](#fig:learning_theory_tmp_003)). Now, what can we do?  We have just\n",
    "scraped the surface of the issues machine learning must confront using\n",
    "methods that are not part of the statistics canon.\n",
    "\n",
    "<!-- dom:FIGURE: [fig-machine_learning/learning_theory_tmp_001.png, width=500\n",
    "frac=0.50] In the classical statistics problem, we observe a sample and model\n",
    "what the urn contains. <div id=\"fig:learning_theory_tmp_001\"></div> -->\n",
    "<!-- begin figure -->\n",
    "<div id=\"fig:learning_theory_tmp_001\"></div>\n",
    "\n",
    "<p>In the classical statistics problem, we observe a sample and model what the\n",
    "urn contains.</p>\n",
    "<img src=\"fig-machine_learning/learning_theory_tmp_001.png\" width=500>\n",
    "\n",
    "<!-- end figure -->\n",
    "\n",
    "\n",
    "<!-- dom:FIGURE: [fig-machine_learning/learning_theory_tmp_002.png, width=500\n",
    "frac=0.60] In the machine learning problem, we want the function that colors the\n",
    "marbles. <div id=\"fig:learning_theory_tmp_002\"></div> -->\n",
    "<!-- begin figure -->\n",
    "<div id=\"fig:learning_theory_tmp_002\"></div>\n",
    "\n",
    "<p>In the machine learning problem, we want the function that colors the\n",
    "marbles.</p>\n",
    "<img src=\"fig-machine_learning/learning_theory_tmp_002.png\" width=500>\n",
    "\n",
    "<!-- end figure -->\n",
    "\n",
    "\n",
    "<!-- dom:FIGURE: [fig-machine_learning/learning_theory_tmp_003.png, width=500\n",
    "frac=0.60] The problem is further complicated because we may see colored marbles\n",
    "that were not present in the original problem.  <div\n",
    "id=\"fig:learning_theory_tmp_003\"></div> -->\n",
    "<!-- begin figure -->\n",
    "<div id=\"fig:learning_theory_tmp_003\"></div>\n",
    "\n",
    "<p>The problem is further complicated because we may see colored marbles that\n",
    "were not present in the original problem.</p>\n",
    "<img src=\"fig-machine_learning/learning_theory_tmp_003.png\" width=500>\n",
    "\n",
    "<!-- end figure -->\n",
    "\n",
    "\n",
    "## Introduction to Theory of Machine Learning\n",
    "\n",
    "Some formality and an example can get us going. We define the unknown\n",
    "target function, $f:\\mathcal{X} \\mapsto \\mathcal{Y}$. The training set\n",
    "is $\\left\\{(x,y)\\right\\}$ which means that we only see the function's\n",
    "inputs/outputs. The hypothesis set $\\mathcal{H}$ is the set of all\n",
    "possible guesses at $f$. This is the set from which we will ultimately\n",
    "draw our final estimate, $\\hat{f}$. The machine learning problem is\n",
    "how to  derive the best element from the hypothesis set by using the\n",
    "training set.  Let's consider a concrete example in the code below.\n",
    "Suppose $\\mathcal{X}$ consists of all three-bit vectors (i.e.,\n",
    "$\\mathcal{X}=\\left\\{000,001,\\ldots,111\\right\\}$) as in the code below,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from pandas import DataFrame\n",
    "df=DataFrame(index=pd.Index(['{0:04b}'.format(i) for i in range(2**4)],\n",
    "                            dtype='str',\n",
    "                            name='x'),columns=['f'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Programming Tip.**\n",
    "\n",
    "The string specification above uses Python's advanced string\n",
    "formatting mini-language. In this case, the specification says to\n",
    "convert the integer into a fixed-width, four-character (`04b`) binary\n",
    "representation.\n",
    "\n",
    "\n",
    "\n",
    " Next, we define the target function $f$ below which just\n",
    "checks if the number of zeros in the binary representation exceeds the\n",
    "number of ones.  If so, then the function outputs `1` and `0`\n",
    "otherwise (i.e., $\\mathcal{Y}=\\left\\{0,1\\right\\}$)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>f</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>x</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0000</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0001</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0010</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0011</th>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0100</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0101</th>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0110</th>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0111</th>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      f\n",
       "x      \n",
       "0000  1\n",
       "0001  1\n",
       "0010  1\n",
       "0011  0\n",
       "0100  1\n",
       "0101  0\n",
       "0110  0\n",
       "0111  0"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.f=np.array(df.index.map(lambda i:i.count('0')) \n",
    "               > df.index.map(lambda i:i.count('1')),dtype=int)\n",
    "df.head(8) # show top half only"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The hypothesis set for this problem is the set of *all*\n",
    "possible functions of $\\mathcal{X}$. The set $\\mathcal{D}$ represents\n",
    "all possible input/output pairs. The corresponding hypothesis set\n",
    "$\\mathcal{H}$ has $2^{16}$ elements, one of which matches $f$. There are\n",
    "$2^{16}$ elements in the hypothesis set because for each of sixteen\n",
    "input elements, there are two possible corresponding values zero or\n",
    "one for each input. Thus, the size of the hypothesis set is $2\\times\n",
    "2\\times\\ldots\\times 2=2^{16}$.  Now, presented\n",
    "with a training set consisting of the first eight input/output pairs,\n",
    "our goal is to minimize errors over the training set\n",
    "($E_{\\texttt{in}}(\\hat{f})$).  There are $2^8$ elements from the\n",
    "hypothesis set that exactly match $f$ over the training set.  But how\n",
    "to pick among these $2^8$ elements?  It seems that we are stuck here.\n",
    "We need another element from the problem in order to proceed. The\n",
    "extra piece we need is to assume that the training set represents a\n",
    "random sampling (*in-sample* data) from a greater population\n",
    "(*out-of-sample* data) that would be consistent with the population\n",
    "that $\\hat{f}$ would ultimately predict upon. In other words, we are\n",
    "assuming a stable probability structure for both the in-sample and\n",
    "out-of-sample data. This is a major assumption!\n",
    "\n",
    "\n",
    "There is a subtle consequence of this assumption --- whatever the\n",
    "machine learning method does once deployed, in order for it to\n",
    "continue to work, it cannot disturb the data environment that it was\n",
    "trained on. Said differently, if the method is not to be trained\n",
    "continuously, then it cannot break this assumption by altering the\n",
    "generative environment that produced the data it was trained on.  For\n",
    "example, suppose we develop a model that predicts hospital\n",
    "readmissions based on seasonal weather and patient health.  Because\n",
    "the model is so effective, in the next six months, the hospital\n",
    "forestalls readmissions by delivering\n",
    "interventions that improve patient health.  Clearly using\n",
    "the model cannot change seasonal weather, but because the hospital\n",
    "used the model to change patient health, the training data used to\n",
    "build the model is no longer consistent with the forward-looking\n",
    "health of the patients.  Thus, there is little reason to think that\n",
    "the model will continue to work as well going forward.\n",
    "\n",
    "Returning to our example,  let's suppose that the first eight elements from\n",
    "$\\mathcal{X}$ are twice as likely as the last eight. The following code is a\n",
    "function that generates elements from $\\mathcal{X}$ according to this\n",
    "distribution."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "np.random.seed(12)\n",
    "def get_sample(n=1):\n",
    "   if n==1:\n",
    "      return '{0:04b}'.format(np.random.choice(list(range(8))*2+list(range(8,16))))\n",
    "   else:\n",
    "      return [get_sample(1) for _ in range(n)]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Programming Tip.**\n",
    "\n",
    "The function that returns random samples uses the\n",
    "`np.random.choice` function from Numpy which takes samples (with replacement)\n",
    "from the given iterable.  Because we want the first eight numbers to be twice\n",
    "as frequent as the rest, we simply repeat them in the iterable using\n",
    "`range(8)*2`. Recall that multiplying a Python list by an integer duplicates\n",
    "the entire list by that integer. It does not do element-wise multiplication as\n",
    "with Numpy arrays. If we wanted the first eight to be 10 times more frequent,\n",
    "then we would use `range(8)*10`, for example. This is a simple but powerful\n",
    "technique that requires very little code. Note that the `p` keyword argument in\n",
    "`np.random.choice` also provides an explicit way to specify more  complicated\n",
    "distributions.\n",
    "\n",
    "\n",
    "\n",
    " The next block applies the function definition $f$ to the\n",
    "sampled data to generate the training set consisting of eight elements."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(6,)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train=df.loc[get_sample(8),'f'] # 8-element training set\n",
    "train.index.unique().shape    # how many unique elements?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notice that even though there are eight elements, there is redundancy\n",
    "because these are drawn according to an underlying probability.  Otherwise, if\n",
    "we just got all sixteen different elements, we would have a training set\n",
    "consisting of the complete specification of $f$ and then we would therefore\n",
    "know what $h\\in \\mathcal{H}$ to pick! However, this effect gives us a clue as\n",
    "to how this will ultimately work. Given the elements in the training set,\n",
    "consider the set of elements from the hypothesis set that exactly match.  How\n",
    "to choose among these? The answer is it does not matter! Why? Because under the\n",
    "assumption that the prediction will be used in an environment that is\n",
    "determined by the same probability, getting something outside of the training\n",
    "set is just as likely as getting something inside the training set.  The size\n",
    "of the training set is key here --- the bigger the training set, the less\n",
    "likely that there will be real-world data that fall outside of it and the\n",
    "better $\\hat{f}$ will perform [^complexity].  The following code shows the\n",
    "elements of the training set in the context of all possible data.\n",
    "\n",
    "[^complexity]: This assumes that the hypothesis set is big enough to capture\n",
    "the entire training set (which it is for this example). We will discuss this\n",
    "trade-off in greater generality shortly."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "x\n",
       "0000    NaN\n",
       "0001    NaN\n",
       "0010    1.0\n",
       "0011    0.0\n",
       "0100    1.0\n",
       "0101    NaN\n",
       "0110    0.0\n",
       "0111    NaN\n",
       "1000    1.0\n",
       "1001    0.0\n",
       "1010    NaN\n",
       "1011    NaN\n",
       "1100    NaN\n",
       "1101    NaN\n",
       "1110    NaN\n",
       "1111    NaN\n",
       "Name: fhat, dtype: float64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['fhat']=df.loc[train.index.unique(),'f']\n",
    "df.fhat"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that there are `NaN` symbols where the training set had\n",
    "no values. For definiteness, we fill these in with zeros, although we\n",
    "can fill them with anything we want so long as whatever we do is not\n",
    "determined by the training set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "df.fhat.fillna(0,inplace=True) #final specification of fhat"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, let's pretend we have deployed this and generate some\n",
    "test data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.17999999999999999"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test= df.loc[get_sample(50),'f']\n",
    "(df.loc[test.index,'fhat'] != test).mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The result shows the error rate, given the probability\n",
    "mechanism that is generating the data.  The following Pandas-fu\n",
    "compares the overlap between the training set and the test set in the\n",
    "context of all possible data.  The `NaN` values show the rows where\n",
    "the test data had items absent in the training data. Recall that the\n",
    "method returns zero for these items.  As shown, sometimes this works\n",
    "in its favor, and sometimes not."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>test</th>\n",
       "      <th>train</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0000</th>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0001</th>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0010</th>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0011</th>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0100</th>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0101</th>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0110</th>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0111</th>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1000</th>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1001</th>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1010</th>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1011</th>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1100</th>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1101</th>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1110</th>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1111</th>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      test  train\n",
       "0000     1    NaN\n",
       "0001     1    NaN\n",
       "0010     1    1.0\n",
       "0011     0    0.0\n",
       "0100     1    1.0\n",
       "0101     0    NaN\n",
       "0110     0    0.0\n",
       "0111     0    NaN\n",
       "1000     1    1.0\n",
       "1001     0    0.0\n",
       "1010     0    NaN\n",
       "1011     0    NaN\n",
       "1100     0    NaN\n",
       "1101     0    NaN\n",
       "1110     0    NaN\n",
       "1111     0    NaN"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.concat([test.groupby(level=0).mean(), \n",
    "           train.groupby(level=0).mean()],\n",
    "          axis=1,\n",
    "          keys=['test','train'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that where the test data and training data share\n",
    "elements, they agree. When the test set produced an unseen element, it\n",
    "produces a match or not.\n",
    "\n",
    "**Programming Tip.**\n",
    "\n",
    "The `pd.concat` function concatenates the two `Series` objects in the\n",
    "list. The `axis=1` means join the two objects along the columns where\n",
    "each newly created column is named according to the given `keys`. The\n",
    "`level=0` in the `groupby` for each of the `Series` objects  means\n",
    "group along the index. Because the index corresponds to the 4-bit\n",
    "elements, this accounts for repetition in the elements. The `mean`\n",
    "aggregation function computes the values of the function for each\n",
    "4-bit element. Because all functions in each  respective group have\n",
    "the same value, the `mean` just picks out that value\n",
    "because the average of a list of constants is that constant.\n",
    "\n",
    "\n",
    "\n",
    "Now, we are in position to ask how big the training set should be to achieve a\n",
    "level of performance. For example, on average, how many in-samples do we need\n",
    "for a given error rate? For this problem, we can ask how large (on average)\n",
    "must the training set be in order to capture *all* of the possibilities and\n",
    "achieve perfect out-of-sample error rates?  For this problem, this turns out\n",
    "to be sixty-three [^coupon].  Let's start over and retrain with these many\n",
    "in-samples.\n",
    "\n",
    "[^coupon]: This is a slight generalization of the classic coupon collector\n",
    "problem."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.0"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train=df.loc[get_sample(63),'f'] \n",
    "del df['fhat']   \n",
    "df['fhat']=df.loc[train.index.unique(),'f']\n",
    "df.fhat.fillna(0,inplace=True) #final specification of fhat\n",
    "test= df.loc[get_sample(50),'f'] \n",
    "(df.loc[test.index,'fhat'] != df.loc[test.index,'f']).mean() # error rate"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notice that this bigger training set has a better error rate because\n",
    "it is able to identify the best element from the hypothesis set because the\n",
    "training set captured more of the complexity of the unknown $f$. This example\n",
    "shows the trade-offs between the size of the training set, the complexity of\n",
    "the target function, the probability structure of the data, and the size of the\n",
    "hypothesis set.\n",
    "\n",
    "## Theory of Generalization\n",
    "\n",
    "What we really want to know is how the our method will perform once deployed.\n",
    "It would be nice to have some kind of performance guarantee. In other words, we\n",
    "worked hard to minimize the errors in the training set, but what errors can we\n",
    "expect at deployment? In training, we minimized the\n",
    "in-sample error, $E_{\\texttt{in}}(\\hat{f}) $, but that's not good enough.  We\n",
    "want guarantees about the out-of-sample error, $ E_{\\texttt{out}}(\\hat{f})$.\n",
    "This is what *generalization* means in machine learning. The\n",
    "mathematical statement of this is the following,\n",
    "\n",
    "$$\n",
    "\\mathbb{P}\\left( \\lvert E_{\\texttt{out}}(\\hat{f})-E_{\\texttt{in}}(\\hat{f})\n",
    "\\rvert > \\epsilon \\right) < \\delta\n",
    "$$\n",
    "\n",
    " for a given $\\epsilon$ and $\\delta$. Informally, this says\n",
    "that the probability of the respective errors differing by more than a\n",
    "given $\\epsilon$ is less than some quantity, $\\delta$. This basically\n",
    "means that whatever the performance on the training set, it should\n",
    "probably  be pretty close to the corresponding performance once\n",
    "deployed.  Note that this does not say that the in-sample errors\n",
    "($E_{\\texttt{in}}$) are any good in an absolute sense.  It just says\n",
    "that we would not expect much different after deployment.  Thus,\n",
    "*good* generalization means no surprises after deployment, not\n",
    "necessarily good performance, by any means.  There are two main ways\n",
    "to get at this: cross-validation and probability inequalities.  Let's\n",
    "consider the latter first.  There are two entangled issues: the\n",
    "complexity of the hypothesis set and the probability of the data. It\n",
    "turns out we can separate these two by deriving a separate notion of\n",
    "complexity free from any particular data probability.\n",
    "\n",
    "\n",
    "**VC Dimension.** We first need a way to quantify model complexity.\n",
    "Following Wasserman [[wasserman2004all]](#wasserman2004all), let $\\mathcal{A}$\n",
    "be a\n",
    "class of sets and $F = \\left\\{x_1,x_2,\\ldots,x_n\\right\\}$, a set of\n",
    "$n$ data points. Then, we define\n",
    "\n",
    "$$\n",
    "N_{\\mathcal{A}}(F)=\\# \\left\\{ F \\cap A : A \\in \\mathcal{A}\\right\\}\n",
    "$$\n",
    "\n",
    " This counts the number of subsets of $F$ that can be extracted by the\n",
    "sets of $\\mathcal{A}$. The number of items in the set (i.e., cardinality) is\n",
    "noted by the $\\#$ symbol.  For example, suppose $F=\\left\\{1\\right\\}$ and\n",
    "$\\mathcal{A}=\\left\\{(x\\leq a)\\right\\}$.  In other words, $\\mathcal{A}$ consists\n",
    "of all intervals closed on the right and parameterized by $a$. In this case we\n",
    "have $N_{\\mathcal{A}}(F)=1$ because all elements can be extracted from $F$\n",
    "using $\\mathcal{A}$.\n",
    "\n",
    "\n",
    "The *shatter coefficient* is defined as,\n",
    "\n",
    "$$\n",
    "s(\\mathcal{A},n) = \\max_{F\\in \\mathcal{F}_n} N_{\\mathcal{A}}(F)\n",
    "$$\n",
    "\n",
    " where $\\mathcal{F}$ consists of all finite sets of size $n$. Note\n",
    "that this sweeps over all finite sets so we don't need to worry about any\n",
    "particular data set of finitely many points. The definition is concerned with\n",
    "$\\mathcal{A}$ and how its sets can pick off elements from the data set. A\n",
    "set $F$ is *shattered* by $\\mathcal{A}$ if it can pick out every element in it.\n",
    "This provides a sense of how the complexity in $\\mathcal{A}$ consumes data. In\n",
    "our last example, the set of half-closed intervals shattered every singleton\n",
    "set $\\left\\{x_1\\right\\}$.\n",
    "\n",
    "Now, we come to the main definition of the Vapnik-Chervonenkis\n",
    "[[vapnik2000nature]](#vapnik2000nature) dimension $d_{\\texttt{VC}}$ which\n",
    "defined as the largest\n",
    "$k$ for which $s(\\mathcal{A},n) = 2^k$, except in the case where\n",
    "$s(\\mathcal{A},n) = 2^n$ for which it is defined as  infinity. For our example\n",
    "where $F= \\left\\{x_1\\right\\}$, we already saw that $\\mathcal{A}$ shatters $F$.\n",
    "How about when $F=\\left\\{x_1,x_2\\right\\}$? Now, we have two points and we have\n",
    "to consider whether all subsets can be  extracted by $\\mathcal{A}$. In this\n",
    "case, there are four subsets,\n",
    "$\\left\\{\\o,\\left\\{x_1\\right\\},\\left\\{x_2\\right\\},\\left\\{x_1,x_2\\right\\}\n",
    "\\right\\}$.  Note that $\\o$ denotes the empty set. The empty set is easily\n",
    "extracted --- pick $a$ so that it is smaller than both\n",
    "$x_1$ and $x_2$.  Assuming that $x_1<x_2$, we can get the next set by\n",
    "choosing $x_1<a<x_2$. The last set is likewise do-able by choosing $x_2<a$.\n",
    "The problem is that we cannot capture the third set, $\\left\\{x_2\\right\\}$,\n",
    "without capturing $x_1$ as well.  This means that we cannot shatter any\n",
    "finite set with $n=2$ using $\\mathcal{A}$. Thus, $d_{\\texttt{VC}}=1$.\n",
    "\n",
    "Here is the climatic result\n",
    "\n",
    "$$\n",
    "E_{\\texttt{out}}(\\hat{f}) \\leq E_{\\texttt{in}}(\\hat{f}) + \\sqrt{\\frac{8}{n}\\ln\n",
    "\\left( \\frac{4 ((2 n)^{ d_{\\texttt{VC}} }+1)}{\\delta} \\right) }\n",
    "$$\n",
    "\n",
    " with probability at least $1-\\delta$. This basically says that the\n",
    "expected out-of-sample error can be no worse than the in-sample error plus a\n",
    "penalty due to the complexity of the hypothesis set. The expected in-sample\n",
    "error\n",
    "comes from the training set but the complexity penalty comes\n",
    "from just the hypothesis set, so we have disentangled these two issues.\n",
    "\n",
    "A general result like this, for which we do not worry about the probability of\n",
    "the data, is certain to be pretty generous, but nonetheless, it tells us how\n",
    "the complexity penalty enters into the out-of-sample error.  In other words,\n",
    "the bound on $E_{\\texttt{out}}(\\hat{f})$ gets worse for a more complex\n",
    "hypothesis set. Thus, this generalization bound is a useful guideline but not\n",
    "very practical if we want to get a good estimate of\n",
    "$E_{\\texttt{out}}(\\hat{f})$.\n",
    "\n",
    "## Worked Example for Generalization/Approximation Complexity\n",
    "\n",
    "The stylized curves in  [Figure](#fig:learning_theory_tmp_004) illustrate the\n",
    "idea that there is some optimal point of complexity that represents the best\n",
    "generalization given the training set.\n",
    "\n",
    "<!-- dom:FIGURE: [fig-machine_learning/learning_theory_tmp_004.png, width=500\n",
    "frac=0.80] In the ideal situation, there is a *best model* that represents the\n",
    "optimal trade-off between complexity and error. This is shown by the vertical\n",
    "line.   <div id=\"fig:learning_theory_tmp_004\"></div> -->\n",
    "<!-- begin figure -->\n",
    "<div id=\"fig:learning_theory_tmp_004\"></div>\n",
    "\n",
    "<p>In the ideal situation, there is a <em>best model</em> that represents the\n",
    "optimal trade-off between complexity and error. This is shown by the vertical\n",
    "line.</p>\n",
    "<img src=\"fig-machine_learning/learning_theory_tmp_004.png\" width=500>\n",
    "\n",
    "<!-- end figure -->\n",
    "\n",
    "\n",
    "To get a firm handle on these curves, let's develop a simple one-dimensional\n",
    "machine learning method and go through the steps to create this graph.  Let's\n",
    "suppose we have a training set consisting of x-y pairs\n",
    "$\\left\\{(x_i,y_i)\\right\\}$. Our method groups the x-data into intervals\n",
    "and then averages the y-data in those intervals. Predicting for new x-data\n",
    "means simply identifying the interval containing the new data then reporting\n",
    "the corresponding value. In other words, we are building a simple\n",
    "one-dimensional, nearest neighbor classifier. For example, suppose the training\n",
    "set\n",
    "x-data is the following,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     15\n",
       "1     30\n",
       "2     45\n",
       "3     65\n",
       "4     76\n",
       "5     82\n",
       "6    115\n",
       "7    145\n",
       "8    147\n",
       "9    158\n",
       "Name: x, dtype: int64"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train=DataFrame(columns=['x','y'])\n",
    "train['x']=np.sort(np.random.choice(range(2**10),size=90))\n",
    "train.x.head(10) # first ten elements"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this example, we took a random set of 10-bit integers. To group\n",
    "these\n",
    "into, say, ten intervals, we simply use Numpy reshape as in the following,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 15,  30,  45,  65,  76,  82, 115, 145, 147],\n",
       "       [158, 165, 174, 175, 181, 209, 215, 217, 232],\n",
       "       [233, 261, 271, 276, 284, 296, 318, 350, 376],\n",
       "       [384, 407, 410, 413, 452, 464, 472, 511, 522],\n",
       "       [525, 527, 531, 534, 544, 545, 548, 567, 567],\n",
       "       [584, 588, 610, 610, 641, 645, 648, 659, 667],\n",
       "       [676, 683, 684, 697, 701, 703, 733, 736, 750],\n",
       "       [754, 755, 772, 776, 790, 794, 798, 804, 830],\n",
       "       [831, 834, 861, 883, 910, 910, 911, 911, 937],\n",
       "       [943, 946, 947, 955, 962, 962, 984, 989, 998]])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.x.values.reshape(10,-1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "where every row is one of the groups. Note that the range of each\n",
    "group (i.e., length of the interval) is not preassigned, and is learned from\n",
    "the training data. For this example, the y-values correspond to the number of\n",
    "ones in the bit representation of the x-values. The following code defines this\n",
    "target function,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "f_target=np.vectorize(lambda i:sum(map(int,i)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Programming Tip.**\n",
    "\n",
    "The above function uses `np.vectorize` which is a convenience method in Numpy\n",
    "that converts plain Python functions into Numpy versions. This basically saves\n",
    "additional looping semantics and makes it easier to use with other Numpy\n",
    "arrays and functions.\n",
    "\n",
    "\n",
    "\n",
    " Next, we create the bit representations of all of the x-data below and\n",
    "then complete training set y-values,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>x</th>\n",
       "      <th>y</th>\n",
       "      <th>xb</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>15</td>\n",
       "      <td>4</td>\n",
       "      <td>0000001111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>30</td>\n",
       "      <td>4</td>\n",
       "      <td>0000011110</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>45</td>\n",
       "      <td>4</td>\n",
       "      <td>0000101101</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>65</td>\n",
       "      <td>2</td>\n",
       "      <td>0001000001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>76</td>\n",
       "      <td>3</td>\n",
       "      <td>0001001100</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    x  y          xb\n",
       "0  15  4  0000001111\n",
       "1  30  4  0000011110\n",
       "2  45  4  0000101101\n",
       "3  65  2  0001000001\n",
       "4  76  3  0001001100"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train['xb']= train.x.map('{0:010b}'.format)\n",
    "train.y=train.xb.map(f_target)\n",
    "train.head(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To train on this data, we just group by the specified amount and then\n",
    "average the y-data over each group."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 3.55555556,  4.88888889,  4.44444444,  4.88888889,  4.11111111,\n",
       "        4.        ,  6.        ,  5.11111111,  6.44444444,  6.66666667])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.y.values.reshape(10,-1).mean(axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that the `axis=1` keyword argument just means average across the\n",
    " columns. So far, this defines the training.  To predict using this\n",
    "method, we have to extract the edges from each of the groups and then fill in\n",
    "with the group-wise mean we just computed for `y`. The following code extracts\n",
    "the edges of each group."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 15 158 233 384 525 584 676 754 831 943]\n",
      "[147 232 376 522 567 667 750 830 937 998]\n"
     ]
    }
   ],
   "source": [
    "le,re=train.x.values.reshape(10,-1)[:,[0,-1]].T\n",
    "print (le) # left edge of group\n",
    "print (re) # right edge of group"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next, we compute the group-wise means and assign them to their\n",
    "respective edges."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    0.0\n",
       "1    NaN\n",
       "2    NaN\n",
       "3    NaN\n",
       "4    NaN\n",
       "dtype: float64"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "val = train.y.values.reshape(10,-1).mean(axis=1).round()\n",
    "func = pd.Series(index=range(1024))\n",
    "func[le]=val    # assign value to left edge\n",
    "func[re]=val    # assign value to right edge\n",
    "func.iloc[0]=0  # default 0 if no data\n",
    "func.iloc[-1]=0 # default 0 if no data\n",
    "func.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that the Pandas `Series` object automatically fills in\n",
    "unassigned values with `NaN`. We have thus far only filled in values at the\n",
    "edges of the groups. Now, we need to fill in the intermediate values."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    0.0\n",
       "1    0.0\n",
       "2    0.0\n",
       "3    0.0\n",
       "4    0.0\n",
       "dtype: float64"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fi=func.interpolate('nearest')\n",
    "fi.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The `interpolate` method of the `Series` object can apply a wide\n",
    "variety of powerful interpolation methods, but we only need the simple nearest\n",
    "neighbor method to create our piecewise approximant.\n",
    "[Figure](#fig:learning_theory_001) shows how this looks for the training data we\n",
    "have\n",
    "created."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nTVw39gAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fb3477d8190>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "from matplotlib.pylab import subplots, mean, arange, setp\n",
    "fig,ax=subplots()\n",
    "fig.set_size_inches((10,5))\n",
    "_=ax.axis(xmax=1024,ymax=10)\n",
    "v=ax.stem(train.x,train.y,markerfmt='go',linefmt='g-')\n",
    "_=setp(v,color='gray')\n",
    "_=fi.plot(ax=ax,lw=4.,color='k')\n",
    "_=ax.set_xlabel('$X$',fontsize=20)\n",
    "_=ax.set_ylabel('$y$',fontsize=22)\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<!-- dom:FIGURE: [fig-machine_learning/learning_theory_001.png, width=500\n",
    "frac=0.85] The vertical lines show the training data and the thick black line is\n",
    "the approximant we have learned from the training data. <div\n",
    "id=\"fig:learning_theory_001\"></div> -->\n",
    "<!-- begin figure -->\n",
    "<div id=\"fig:learning_theory_001\"></div>\n",
    "\n",
    "<p>The vertical lines show the training data and the thick black line is the\n",
    "approximant we have learned from the training data.</p>\n",
    "<img src=\"fig-machine_learning/learning_theory_001.png\" width=500>\n",
    "\n",
    "<!-- end figure -->\n",
    "\n",
    "\n",
    "Now, with all that established, we can now  draw the curves for this machine\n",
    "learning method. Instead of partitioning the training data for cross-validation\n",
    "(which we'll discuss later), we can simulate test data using the same mechanism\n",
    "as for the training data, as shown next,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "test=pd.DataFrame(columns=['x','xb','y'])\n",
    "test['x']=np.random.choice(range(2**10),size=500)\n",
    "test.xb= test.x.map('{0:010b}'.format)\n",
    "test.y=test.xb.map(f_target)\n",
    "test.sort_values('x',inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The curves are the respective errors for the training data\n",
    "and the testing data. For our error measure, we use the mean-squared-error,\n",
    "\n",
    "$$\n",
    "E_{\\texttt{out}} = \\frac{1}{n} \\sum_{i=1}^n (\\hat{f}(x_i) - y_i)^2\n",
    "$$\n",
    "\n",
    " where $\\left\\{(x_i,y_i)\\right\\}_{i=1}^n$ come from the test data. The\n",
    "in-sample error ($E_{\\texttt{in}}$) is defined the same except for the\n",
    "in-sample data.  In this example, the size of each group is proportional to\n",
    "$d_{\\texttt{VC}}$, so the more groups we choose, the more complexity in the\n",
    "fitting.  Now, we have all the ingredients to understand the trade-offs of\n",
    "complexity versus error."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nDB48ONohylFSiYWIiIhINZgZrVu35j/+4z9455132Lp1K3/729/o168fLVu2JDc3l/nz5zN+/Hie\ne+45srKyoh2yHGeiXmIhIiIicjitW7fm+uuv5/rrr6e0tJSCggKWLl3KmjVreOWVV4iLi+Oss84i\nFApx9dVXayU/OWrqQRYREZF6Iz4+nvT0dH7xi1+wbds23nzzTW699Vb27dvHM888Q2FhIfv372fe\nvHmsWLGC0tLSaIcs9ZBqkEVEROS4cHDWi927dzNw4ED27NlD8+bNGTx4MKFQiAsuuICUlJQoRymg\nGmQRERGROtGqVStatWpF9+7dWb9+PVOnTuVb3/oWixcv5qabbuLee++ltLSU0tJSTSEnh6UeZBER\nETmuFRUVsXjxYlJTU2nWrBnLly/nuuuuo1evXoRCITIzMzn11FMxq2xxXzkWYr0HWQmyiIiINBju\nzieffMK0adOYN28eH374IQDt27fnkUce4ZRTTolyhA1DrCfIKrEQERGRBsPM6NKlC3/4wx9Ys2YN\nn376Kffccw9du3YlPT2dvLw8Jk+ezK9+9SsWLlxIfn5+tEOWKNA0byIiItJgderUiQkTJjBhwgRK\nSkrIz8/H3XnjjTd44YUXSExMpF+/fnz729/m0ksvjXa4UkfUgywiIiICJCQk0KxZMyZPnsyuXbtY\nsGAB48aN4/PPP2fx4sXk5eVRXFzM008/zfr16zley1RFNcgiIiIih1VWVsaePXsoLS1l7dq1DB06\nFHfnpJNOIhQKEQqF6NOnjxYoqQbVIIuIiIjUY3FxcbRq1YoTTzyRzMxMPvvsM+6//366devGP//5\nT6655hrmzJlDWVkZ+fn55ObmRjtkOUrqQRYRERGpodzcXF588UW6d+9OWVkZTz/9NA888AB9+/Yt\nn0Kubdu20Q4z5sR6D7IG6YmIiIjUUHp6OldeeSUQlGIUFxdTWFjIwoULmTRpEpMmTeL0009nxowZ\nJCUlRTlaqSolyCIiIiK1IC4ujn79+tGvXz/cndWrV/Pcc8+xYcMGioqKKCoqYuLEiaSmphIKhejX\nr5+S5hilBFlERESklpkZvXr1olevXgAcOHCA3NxcSktLmTNnDs8++ywpKSkMGDCAUaNGMWDAgChH\nLJE0SE9ERETkGEtKSiIjI4P58+eze/duZsyYwSWXXML777/PypUrKSgoIDs7myeeeILNmzdHO9wG\nT4P0RERERKKkpKSE7Oxs9u/fz+zZs7n55psB6Ny5M0OHDiUzM5OePXsSF3d89WnG+iC94+unLSIi\nIlKPJCQkkJGRQdu2bRk/fjwffvghEydOJCMjg6lTpzJ69GjWrVtHWVkZu3fvpqioKNohNwiqQRYR\nERGJAWZG9+7d6d69O//5n//Jjh07WLhwIT179iQnJ4e7776bJUuW0L9/f0KhEIMHD6ZFixbRDvu4\npARZREREJAadeOKJjBs3DoDS0lLGjx9PRkYGixYt4pVXXiEuLo7hw4dz3333RTfQ45ASZBEREZEY\nFx8fz4gRIxgxYgRlZWUsW7aM5557jvj4+PLZMW688UbOOeccQqEQZ555JvHx8dEOu95SgiwiIiJS\nj8TFxdG/f3/69+8PQFFRERs2bKBx48Y8/vjjTJs2jebNmzN48GDGjh1Lt27dohxx/aNBeiIiIiL1\nWHJyMj169ODtt99mx44dTJ06lQEDBrB48WK2bNlCQUEB69ev55///Ce7d++Odrj1gnqQRURERI4T\nGRkZXHvttVx77bUUFRVRWFhIfn4+U6dOZcqUKZgZPXv2JBQKEQqF6Ny5M2YW7bBjjnqQRURERI5D\nycnJNG/enPbt2zN58mTeeecdfvWrX1FaWsqf/vQnRo8eTUFBAe7O1q1bKSkpiXbIMUMLhYiIiIg0\nMBs3bmTFihX06NGDvLw8Ro8eTVZWFoMGDSIUCtG/f39SU1OP2f1jfaEQlViIiIiINDCdOnWiU6dO\nABQXF3PnnXcye/ZslixZwty5c0lMTGT8+PHccMMNUY40OlRiISIiItKAJSYmcvXVVzN79mx27drF\n/PnzGTduHB07diQ3N5d169Zx+eWXM2XKFD766COO1+qDSOpBFhEREREAkpKSGD58OMOHD8fdKSws\nZM+ePSQkJPDggw/ywAMP0KZNG0KhED/+8Y9p3bp1tEM+JtSDLCIiIiLfYGakpKQwbNgwVq5cyWef\nfcb9999P165dee6559i/fz/79u3jjTfeYN68eeTl5UU75FqjQXoiIiIiUi0FBQWUlJSQlZXFtdde\ny5IlS4iPj6dv374MHTqUIUOG0LZt20NeH+uD9GIiQTazYcADQDww1d1/X+F4I+BJ4BxgDzDa3Tcd\nrk0lyCIiIiLHXnFxMa+//jqzZs1i4cKFfPbZZ5x55pk89dRTJCUlsWnTJjp06ICZMWDAAL788stv\ntNG6dWt27NhxzGOtN7NYmFk88FfgQmAL8J6ZzXX3tRGnXQvsdfdTzewK4A/A6LqPVkREREQiJSYm\nMnToUIYOHYq7s3r1arZt20ZcXBzbtm1jxIgRZGRkkJmZWWlyDLBz5846jvrwop4gA+cCG9x9I4CZ\nPQtcAkQmyJcAd4a/nglMNjPzWOj+FhEREREgqFvu1asXvXr1AqBNmzY88MADPP/888yePTvK0VVd\nLAzSawtsjtjeEt5X6TnuXgLkAC0rNmRm15nZcjNbrrXGRURERKKrefPmjB8/nkWLFlGfcrNYSJAr\nWwC8Ys9wVc7B3R9x9z7u3qdVq1a1EpyIiIiIHL1juTJfbYuFBHkL0D5iux2w7VDnmFkC0BTIqpPo\nRERERKRBiYUE+T3gNDM7xcySgCuAuRXOmQuMDX/9PeBV1R+LiIiI1C+HWlgk1hYcifogPXcvMbOb\ngJcIpnl7zN0/NLOJwHJ3nwtMA54ysw0EPcdXRC9iEREREamJupjKrTZEPUEGcPf5wPwK++6I+LoI\n+H5dxyUiIiIiDU8slFiIiIiIiMQMJcgiIiIiIhGUIIuIiIiIRFCCLCIiIiISQQmyiIiIiEgEJcgi\nIiIiIhGUIIuIiIiIRFCCLCIiIiISQQmyiIiIiEgEJcgiIiIiIhGUIIuIiIiIRDB3j3YMx4SZ7QY+\nP0bNZwBfHqO2pf7R50Eq0mdCIunzIJH0eYiuDu7e6kgnHbcJ8rFkZsvdvU+045DYoM+DVKTPhETS\n50Ei6fNQP6jEQkREREQkghJkEREREZEISpBr5pFoByAxRZ8HqUifCYmkz4NE0uehHlANsoiIiIhI\nBPUgi4iIiIhEUIIsIiIiIhJBCXI1mdkwM/vIzDaY2e3Rjkfqlpm1N7MlZrbOzD40s1vD+1uY2WIz\n+yT83jzasUrdMbN4M/uXmb0Y3j7FzN4Nfx5mmFlStGOUumNmzcxsppmtDz8rztczouEys5+H/71Y\nY2bPmFmynhGxTwlyNZhZPPBXYDjQHRhjZt2jG5XUsRLgl+5+OnAeMD78GbgdeMXdTwNeCW9Lw3Er\nsC5i+w/An8Kfh73AtVGJSqLlAWChu3cDziT4bOgZ0QCZWVvgFqCPu/cA4oEr0DMi5ilBrp5zgQ3u\nvtHdDwDPApdEOSapQ+6+3d1XhL/OI/iHry3B5+CJ8GlPAJdGJ0Kpa2bWDhgBTA1vG5AJzAyfos9D\nA2Jm6cBAYBqAux9w92z0jGjIEoDGZpYApADb0TMi5ilBrp62wOaI7S3hfdIAmVlHoDfwLtDa3bdD\nkEQDJ0QvMqljfwZ+DZSFt1sC2e5eEt7Wc6Jh6QTsBv4eLruZamZN0DOiQXL3rcC9wBcEiXEO8D56\nRsQ8JcjVY5Xsnk6l+QAACUtJREFU0zx5DZCZpQLPAT9z99xoxyPRYWbfBna5+/uRuys5Vc+JhiMB\nOBuY4u69gQJUTtFghWvNLwFOAdoATQjKNCvSMyLGKEGuni1A+4jtdsC2KMUiUWJmiQTJ8dPuPiu8\ne6eZnRQ+fhKwK1rxSZ3qD3zHzDYRlFxlEvQoNwv/ORX0nGhotgBb3P3d8PZMgoRZz4iGaSjwmbvv\ndvdiYBZwAXpGxDwlyNXzHnBaePRpEkGh/dwoxyR1KFxfOg1Y5+73RxyaC4wNfz0WeL6uY5O65+7/\n7u7t3L0jwfPgVXf/AbAE+F74NH0eGhB33wFsNrOu4V0hYC16RjRUXwDnmVlK+N+Pg58HPSNinFbS\nqyYzu5ighygeeMzdJ0U5JKlDZjYAWAqs5qua098Q1CH/AziZ4IH4fXfPikqQEhVmNhiY4O7fNrNO\nBD3KLYB/AVe5+/5oxid1x8zOIhi0mQRsBK4h6JDSM6IBMrO7gNEEsyD9C/gxQc2xnhExTAmyiIiI\niEgElViIiIiIiERQgiwiIiIiEkEJsoiIiIhIBCXIIiIiIiIRlCCLiIiIiERQgiwiDZqZXWxmT5nZ\nBjPLN7MiM9tiZvPM7AYzS4t2jLXJzB43MzezcVGMYVM4ho7RikFE5HCUIItIg2RmJ5jZa8A84Crg\nALAImANsIlgBawqw0cw6RCnMBiUWkncREQjWjBcRaVDMrBnwFnAqsAy4wd0/qHBOGnAj8FugOfB5\nXcd5HAsBicDWaAciIlIZJcgi0hBNJkiO/w/IdPeiiie4ex7wRzObBRTUcXzHNXf/NNoxiIgcjkos\nRKRBMbPOwJjw5g2VJceR3H2Du2+PuD7RzG4ys3fNLNfMCs1snZn93sxaVHK/juGygU1mFmdmvzCz\nD8PXbTGz+80sJXxuczP7c/jc/Wb2iZn94hDfx2vhdgeb2RAze9nM9obrqN80s+/U8OfTz8yeDcd2\nwMx2m9nc8DLrFc99OBzDQjOzSo4fLJl4IfJ4xRrkgz8jYGz4lL+Hjx98jTOzgeGv1x0m9oxwDXlh\nZf8tRESqSgmyiDQ03yZ49q12939V50IzSyaoU/4L0AN4A3gBaAbcBqwws06HaWI6MBH4LNxOE+Dn\nwHPhhO5dYDTwHvAm0BG4z8x+c5g2vwu8DJwALABWAf2B5w+VXB/m+/slQcnJKGAH8DywARgBvG5m\nP6lwya3h+/0bcHuFtsYSJLybgbHu7oe5dT7wBHCwZ/mt8PbB1wZ3fyN8r25mlnmIdn4MNAKedfes\nI37DIiKH4u566aWXXg3mBTwJODCtBtf+MXztOqBtxP7GwHPhY8sqXNMxvN+B9UCbiGPtgS/Dx1YD\n/wSSI46PCB/LBVIqtPtaRLsTKhwbCRQDJUCvCsceD18zrsL+YeH9W4F+FY71B3IIBjJ2qXCsC5AX\nvl//8L7TCcpSyvdVuGZT+F4dqxJbxPFrw8dnVnIsjuAXDwf6RvtzppdeetXvl3qQRaShaRV+31Wd\ni8ysMcGgPYBb3L18gJm7FwLXEySF55lZ/0M0c4u7b4u4bjPwv+HNDsCNHlHy4e7zgA+ANKDPIdp8\n393vjdzh7i8Q9FbHAzdX7TvkrvD7j9393QrtvQX8N8HAuusrHPs4vC8BeNbM2hMk+inAf4SvrS3T\ngSzgEjNrU+HYCIJfRt5z9/dq8Z4i0gApQRYRqZpzgFRgm7svrnjQ3b8kKLcAGFzJ9cXAq5Xs3xB+\nXx5uo6JPwu8VE8KD/vcQ+586TCxfY2YZQF+CnupFhzjt9fD7+RUPuPt04FGgHUFP+BnAQoIe91oT\n/kVkKkEyfl2Fwz8Nv/+1Nu8pIg2TEmQRaWh2h99PqOZ1bcPvnx3mnIM1tG0rObbD3Usq2Z8fft9y\niDYPHk8+xPFDxbMp/N7uEMcjnQIYkA6UVBgg5+EBdP8XPrfVIdq4hWAqvKYEvfM/dPfD1R3X1F+B\nUuAnZpYA5QMv/w3YA8w4BvcUkQZG07yJSEPzPvBDgh7T6jg4C8Phkr5vzOQQoewI7R/peE1VJUmN\nD7/nECyUcjiV9XIDDARODn/dAjjtMOfWmLt/YWZzCQYnXgrMJCh9MeAxP8KsJCIiVaEEWUQamnnA\n/UBPM+vtVZ/J4mAP7ymHOefgsbpcAKPjEfZvO8TxSJvD78XuPq66AZjZSQQlHQb8HbiGoB75LHff\nW932quAvBAnyT83sxfD9yoC/HYN7iUgDpBILEWlQ3H0DX/0ZfoqZNTrc+WbWOZwAvk9Q7tDWzEKV\nnNeSYPYICGaYqCs/OML+147UQHjA4Wogw8wGV+fmZhYHPE1QsvKAu/+IYKaQkwmS5eo4EH4/bOeN\nuy8B1gBDCAYXtgAWuPvGat5PRKRSSpBFpCG6CdgI9ANeNbOeFU8wsybheYTfB1qHB4gd7KF8IJw0\nHzw3GZhCMIjvnVqeueFI+prZzyN3mNnFwFUEtbqTq9jOf4bf/9fMLqp40MySzOw7ZlZxkN4dBInq\ncuDX4X0/JZjS7hIzu7WK94evet5Pr8K5B7+vg/d8qBr3ERE5LJVYiEiD4+5Z4ZXh/gEMAD4ws7UE\nSd0BgkF25xIsOrGTYGoxCJLIPgQzQ3xiZq8ChcC3gJOALzh0j+6x8iBwr5mNAz4k6Lk9OM3cr919\nZVUacffnwwuF/BF4ycw+Bj4i+Hm0B7oSDMC7kWAxEcxsCMHPJBe4wt0PhNsqMLNRBAP7/mhmb7n7\n8iqE8TxBwv0zM+tBUNbiBLXFb1c49yngd0Bzgl92Flbl+xQRqQr1IItIg+Tu2939WwRlEdMJFvsY\nBlwGdCJYne46oLO7fxG+pgi4iGDGhrUEPaeXECSIfwTOjsKf+Wfz1QwOI4DewNvAd939nuo05O73\nE0xnN41g4N6F4babE0zz9hOCXyowsxMISivigJ+4+6cV2loN/AxIAmaYWdMq3H8lX60keAHwI4LF\nQbpUcu6+8PcJMMXdj9UgRxFpgOzYzMIjIiLHkpm9BgwChrj7a9GNpu6FE/TNBGUk7VxLS4tILVIP\nsoiI1Ee/JeidfkLJsYjUNtUgi4hIvWBmB8suOhPUgecQLIEtIlKr1IMsIiL1RReCmuRzgTeBYe5e\nlXmeRUSqRTXIIiIiIiIR1IMsIiIiIhJBCbKIiIiISAQlyCIiIiIiEZQgi4iIiIhEUIIsIiIiIhLh\n/wGbP/SsOg7PwgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fb30ff3a710>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n=train.shape[0]\n",
    "divisors=arange(1,n+1)[(n % arange(1,n+1))==0]\n",
    "def atrainer(train,dvc):\n",
    "    le,re=train.x.values.reshape(dvc,-1)[:,[0,-1]].T\n",
    "    val = train.y.values.reshape(dvc,-1).mean(axis=1).round()\n",
    "    func = pd.Series(index=range(1024))\n",
    "    func[le]=val\n",
    "    func[re]=val\n",
    "    func.iloc[0]=0\n",
    "    func.iloc[-1]=0\n",
    "    fi=func.interpolate('nearest')\n",
    "    return fi\n",
    "\n",
    "otrn=[]; otst=[]\n",
    "for i in divisors: # loop over divisors\n",
    "    fi=atrainer(train,i)\n",
    "    otrn.append((mean((fi[train.x].values-train.y.values)**2)))\n",
    "    otst.append((mean((fi[test.x].values-test.y.values)**2)))\n",
    "\n",
    "fig,ax=subplots()\n",
    "fig.set_size_inches((10,6))\n",
    "_=ax.plot(divisors,otrn,'--s',label='train',color='k')\n",
    "_=ax.plot(divisors,otst,'-o',label='test',color='gray')\n",
    "_=ax.fill_between(divisors,otrn,otst,color='gray',alpha=.3)\n",
    "_=ax.legend(loc=0)\n",
    "_=ax.set_xlabel('Complexity',fontsize=22)\n",
    "_=ax.set_ylabel('Mean-squared-error',fontsize=22)\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[Figure](#fig:learning_theory_002) shows the curves for our\n",
    "one-dimensional clustering method.  The dotted line shows the\n",
    "mean-squared-error on the training set and the other line shows the\n",
    "same for the test data. The shaded region is the *complexity penalty*\n",
    "of this method.  Note that with enough complexity, the method can\n",
    "exactly memorize the testing data, but that only penalizes the testing\n",
    "error ($E_{\\texttt{out}}$). This effect is exactly what the\n",
    "Vapnik-Chervonenkis theory expresses. The horizontal axis is\n",
    "proportional to the VC-dimension. In this case, complexity boils down\n",
    "to the number of intervals used in the sectioning. At the far right,\n",
    "we have as many intervals as there are elements in the data set,\n",
    "meaning that every element is wrapped in its own interval. The average\n",
    "value of the data in that interval is therefore just the corresponding\n",
    "$y$ value because there are no other elements to average over. The\n",
    "Jupyter/IPython notebook corresponding to the section has the code to\n",
    "generate these curves so you can see how these curves change with\n",
    "bigger or smaller data sets.\n",
    "\n",
    "<!-- dom:FIGURE: [fig-machine_learning/learning_theory_002.png, width=500\n",
    "frac=0.85] The dotted line shows the mean-squared-error on the training set and\n",
    "the other line shows the same for the test data. The shaded region is the\n",
    "*complexity penalty* of this method. Note that as the complexity of the model\n",
    "increases, the training error decreases, and the method essentially memorizes\n",
    "the data. However, this improvement in training error comes at the cost of\n",
    "larger testing error. <div id=\"fig:learning_theory_002\"></div> -->\n",
    "<!-- begin figure -->\n",
    "<div id=\"fig:learning_theory_002\"></div>\n",
    "\n",
    "<p>The dotted line shows the mean-squared-error on the training set and the\n",
    "other line shows the same for the test data. The shaded region is the\n",
    "<em>complexity penalty</em> of this method. Note that as the complexity of the\n",
    "model increases, the training error decreases, and the method essentially\n",
    "memorizes the data. However, this improvement in training error comes at the\n",
    "cost of larger testing error.</p>\n",
    "<img src=\"fig-machine_learning/learning_theory_002.png\" width=500>\n",
    "\n",
    "<!-- end figure -->\n",
    "\n",
    "\n",
    "\n",
    "Before we leave this problem, there is another way to visualize the\n",
    "performance of our learning method. This problem can be thought of as\n",
    "a multi-class identification problem. Given a 10-bit integer, the\n",
    "number of ones in its binary representation is in one of the classes\n",
    "$\\left\\{0,1,\\ldots,10\\right\\}$.  The output of the model tries to put\n",
    "each integer in its respective class. How well this was done can be\n",
    "visualized using a *confusion matrix* as shown in the next code block,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 1  0  0  0  0  0  0  0  0  0]\n",
      " [ 1  0  1  0  1  1  0  0  0  0]\n",
      " [ 0  0  3  9  7  4  0  0  0  5]\n",
      " [ 1  0  3 23 19  6  6  0  2  0]\n",
      " [ 0  0  1 26 27 14 27  2  2  0]\n",
      " [ 0  0  3 15 31 28 30  8  1  0]\n",
      " [ 0  0  1  8 18 20 25 23  2  2]\n",
      " [ 1  0  1 10  5 13  7 19  3  6]\n",
      " [ 4  0  1  2  0  2  2  7  4  3]\n",
      " [ 2  0  0  0  0  1  0  0  0  0]]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "cmx=confusion_matrix(test.y.values,fi[test.x].values)\n",
    "print(cmx)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The rows of this $10 \\times 10$ matrix show what the true class was\n",
    "and the columns indicate the class that the model predicted.  The numbers in\n",
    "the matrix indicate the number of times that association was made. For example,\n",
    "the first row shows that there was one entry in the test set with no ones in\n",
    "its binary representation (i.e, namely the number zero) and it was correctly\n",
    "classified (namely, it is in the first row, first column of the matrix). The\n",
    "second row shows there were four entries total in the test set with a binary\n",
    "representation containing exactly a single one. This was incorrectly classified\n",
    "as the 0-class (i.e, first column) once, the 2-class (third column) once, the\n",
    "4-class (fifth column) once, and the 5-class (sixth column) once.  It was never\n",
    "classified correctly because the second column is zero for this row. In other\n",
    "words, the diagonal entries show the number of times it was correctly\n",
    "classified.\n",
    "\n",
    "Using this matrix, we can easily estimate the true-detection\n",
    "probability that we covered earlier in our hypothesis testing section,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1 0 0 0 0 0 0 0 0 0]\n"
     ]
    }
   ],
   "source": [
    "print(cmx.diagonal()/cmx.sum(axis=1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In other words, the first element is the probability of detecting `0`\n",
    "when `0` is in force, the second element is the probability of detecting `1`\n",
    "when `1` is in force, and so on. We can likewise compute the false-alarm rate\n",
    "for each of the classes in the following,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0 0 0 0 0 0 0 0 0 0]\n"
     ]
    }
   ],
   "source": [
    "print (cmx.sum(axis=0) - cmx.diagonal())/(cmx.sum()-cmx.sum(axis=1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Programming Tip.**\n",
    "\n",
    "The Numpy `sum` function can sum across a particular axis or, if the\n",
    "axis is unspecified, will sum all entries of the array.\n",
    "\n",
    "\n",
    "\n",
    " In this case, the first element is the probability that `0`\n",
    "is declared when another category is in force, the next element is the\n",
    "probability that `1` is declared when another category is in force,\n",
    "and so on.. For a decent classifier, we want a true-detection\n",
    "probability to be greater than the corresponding false-alarm rate,\n",
    "otherwise the classifier is no better than a coin-flip. Note that, at\n",
    "the time of this writing, Scikit-learn  has limited tools for this\n",
    "kind of multiple class classification task.\n",
    "\n",
    "The missing feature of this problem, from the learning\n",
    "algorithm standpoint, is that we did not supply the bit representation\n",
    "of every element which was used to derive the target variable, $y$.\n",
    "Instead, we just used the integer value of each of the 10-bit numbers,\n",
    "which essentially concealed the mechanism for creating the $y$ values.\n",
    "In other words, there was a unknown transformation from the input\n",
    "space $\\mathcal{X}$ to $\\mathcal{Y}$ that the learning algorithm had\n",
    "to overcome, but that it could not overcome, at least not without\n",
    "memorizing the training data. This lack of knowledge is a key issue in\n",
    "all machine learning problems, although we have made it explicit here\n",
    "with this stylized example. This means that there may be one or more\n",
    "transformations from $\\mathcal{X} \\rightarrow \\mathcal{X}^\\prime$ that\n",
    "can help learning algorithm get traction on the so-transformed space\n",
    "while providing a better trade-off between generalization and\n",
    "approximation than could have been achieved otherwise. Finding such\n",
    "transformations is called *feature engineering*.\n",
    "\n",
    "\n",
    "## Cross-Validation\n",
    "<div id=\"ch:ml:sec:cv\"></div>\n",
    "\n",
    "In the last section, we explored a stylized machine learning example\n",
    "to understand the issues of complexity in machine learning. However,\n",
    "to get an estimate of out-of-sample errors, we simply generated more\n",
    "synthetic data. In practice, this is not an option, so we need to\n",
    "estimate these errors from the training set itself. This is what\n",
    "cross-validation does.  The simplest form of cross-validation is\n",
    "k-fold validation. For example, if $K=3$, then the training data is\n",
    "divided into three sections wherein each of the three sections is used\n",
    "for testing and the remaining two are used for training.  This is\n",
    "implemented in Scikit-learn as in the following,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['a' 'a' 'a' 'b' 'b' 'b' 'c' 'c' 'c']\n",
      "(array([3, 4, 5, 6, 7, 8]), array([0, 1, 2]))\n",
      "(array([0, 1, 2, 6, 7, 8]), array([3, 4, 5]))\n",
      "(array([0, 1, 2, 3, 4, 5]), array([6, 7, 8]))\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "from sklearn.model_selection import KFold\n",
    "data =np.array(['a',]*3+['b',]*3+['c',]*3) # example \n",
    "print (data)\n",
    "kf = KFold(3)\n",
    "for train_idx,test_idx in kf.split(data):\n",
    "   print (train_idx,test_idx)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the code above, we construct a sample data array and then see\n",
    "how `KFold` splits it up into indicies for training and testing, respectively.\n",
    "Notice that there are no duplicated elements in each row between training and\n",
    "testing indicies. To examine the elements of the data set in each category, we\n",
    "simply\n",
    "use each of the indicies as in the following,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('training', array(['b', 'b', 'b', 'c', 'c', 'c'],\n",
      "      dtype='|S1'))\n",
      "('testing', array(['a', 'a', 'a'],\n",
      "      dtype='|S1'))\n",
      "('training', array(['a', 'a', 'a', 'c', 'c', 'c'],\n",
      "      dtype='|S1'))\n",
      "('testing', array(['b', 'b', 'b'],\n",
      "      dtype='|S1'))\n",
      "('training', array(['a', 'a', 'a', 'b', 'b', 'b'],\n",
      "      dtype='|S1'))\n",
      "('testing', array(['c', 'c', 'c'],\n",
      "      dtype='|S1'))\n"
     ]
    }
   ],
   "source": [
    "for train_idx,test_idx in kf.split(data):\n",
    "   print('training', data[ train_idx ])\n",
    "   print('testing' , data[ test_idx ])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This shows how each group is used in turn for training/testing. There\n",
    "is no random shuffling of the data unless the `shuffle` keyword argument is\n",
    "given.  The error over the test set is th *cross-validation error*. The idea is\n",
    "to postulate models of differing complexity and then pick the one with the best\n",
    "cross-validation error. For example, suppose we had the following sine wave\n",
    "data,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "xi = np.linspace(0,1,40)\n",
    "yi = np.sin(2*np.pi*xi)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "and we want to fit this with polynomials of increasing order."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nEseOHXPb9VxFd9+DE+uQFZhSIkWEYcOGoZQiPj4+6AdXc3NzefTRR4mJiaFjx46EhIS4tX7t3AOI\nOnXqkJyczLZt2/j111/dXn9sbCw9e/Zk4sSJDBgwgNjYWF5++WU+/fRTzp07x5kzZ8jOznb7dR1R\nvXp1m/tLY/c92LBkhYkIM2bMQCmFJZX00KFDDBw4kJSUFB9b6TmmT5/Opk2b6Nq1q82pGUqKdu4B\nxnPPPUfdunX58MMPPTavTFhYGLfeeivDhg3jlVde4eLFiyxcuJB+/foRHx/PqFGj+PPPPz1y7YLY\nmo+lNGacBDtjxowpNKiflZXFI488wh9//OEjqzzH4cOHSU5O5vrrrycxMTE/79+daOceYISHhzNv\n3jxOnz7NypUrPX69ypUrEx0djcFgoHHjxiQmJvLaa69Rt25d7rnnHlatcikxyims52P5+eefadGi\nhc44CXLshdkyMzNp0qQJ77//vpct8ixPP/00WVlZdOvWzeZb5+5AO/cA5I477qB///6sX7/eay1o\ngJtuuolPPvmE9PR0XnnlFfbt28eaNWsA00sY1rMBFhdLdszBgwfzW3I7duxg/Pjx5OXlkZaWph17\nEGIvzFazZk0GDhzI7bffDsD58+f9Om3XGVauXMmKFSu499577YYd3YF27gHKW2+9RVxcHCkpKS7n\nvpeUGjVqMHr0aP78809effVVADZs2MB1113H7bffzsKFC23OCugMOjumdGLrha+wsDAmTpzIrFmz\nqFWrFiLCAw88wD333BOwoZrz58/z5JNPUqtWLe6++24MBs+5YO3cA5Ty5cszc+ZMjhw5whdffOET\nGwwGAzExMQA0atSISZMm8ddffzFgwACqV6/OE088wZkzZ1yqU2fHlE4KvvAVFRVFbm4uzz77bP70\nzikpKXTv3p1ffvmFJk2a8Oyzz3Lx4kVfm+4SI0aMICMjgx49enj8fRLt3AOY7t2707lzZ1avXs3R\no0d9akulSpUYMWIEu3bt4uuvv6Zz58588sknlClTBjDl854/f77IemrWrGlzv86OCX6s51R67bXX\nyMvLIyMjI3/umccee4xy5cqxZ88e+vXrx+uvv06DBg08kjnmCdauXcvs2bO56667qF+/vkcGUa3R\nzj3AmT17NpGRkSxcuJC8vDxfm4NSijvuuIOUlBT2799PeHg4eXl5dOvWjerVq/Ovf/2Ln376qVDc\n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\nAOO6AyPjKSFqAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fb30df36e10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "kf = KFold(4)\n",
    "fig,axs=subplots(2,2,sharex=True,sharey=True)\n",
    "deg = 1 # polynomial degree\n",
    "for ax,(train_idx,test_idx) in zip(axs.flat,kf.split(xi)):\n",
    "    _=ax.plot(xi,yi,xi[train_idx],yi[train_idx],'ok',color='k')\n",
    "    p = np.polyfit(xi[train_idx],yi[train_idx],deg)\n",
    "    pval = np.polyval(p,xi)\n",
    "    _=ax.plot(xi,pval,'--k')\n",
    "    error = np.mean((pval[test_idx]-yi[test_idx])**2)\n",
    "    _=ax.set_title('degree=%d;error=%3.3g'%(deg,error))\n",
    "    _=ax.fill_between(xi[test_idx],pval[test_idx],yi[test_idx],color='gray',alpha=.8)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<!-- dom:FIGURE: [fig-machine_learning/learning_theory_003.png, width=500\n",
    "frac=0.85] This shows the folds and errors for the linear model. The shaded\n",
    "areas show the errors in each respective test set (i.e, *cross-validation\n",
    "scores*) for the linear model. <div id=\"fig:learning_theory_003\"></div> -->\n",
    "<!-- begin figure -->\n",
    "<div id=\"fig:learning_theory_003\"></div>\n",
    "\n",
    "<p>This shows the folds and errors for the linear model. The shaded areas show\n",
    "the errors in each respective test set (i.e, <em>cross-validation scores</em>)\n",
    "for the linear model.</p>\n",
    "<img src=\"fig-machine_learning/learning_theory_003.png\" width=500>\n",
    "\n",
    "<!-- end figure -->\n",
    "\n",
    "\n",
    "[Figure](#fig:learning_theory_003) shows the individual folds in each\n",
    "panel.  The circles represent the training data. The diagonal line is\n",
    "the fitted polynomial. The gray shaded areas indicate the regions of\n",
    "errors between the fitted polynomial and the held-out testing data.\n",
    "The larger the gray area, the bigger the cross-validation errors,\n",
    "as are reported in the title of each frame."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fb30dde21d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,axs=subplots(2,2,sharex=True,sharey=True)\n",
    "deg = 2 # polynomial degree\n",
    "for ax,(train_idx,test_idx) in zip(axs.flat,kf.split(xi)):\n",
    "    _=ax.plot(xi,yi,xi[train_idx],yi[train_idx],'ok',color='k')\n",
    "    p = np.polyfit(xi[train_idx],yi[train_idx],deg)\n",
    "    pval = np.polyval(p,xi)\n",
    "    _=ax.plot(xi,pval,'--k')\n",
    "    error = np.mean((pval[test_idx]-yi[test_idx])**2)\n",
    "    _=ax.set_title('degree=%d;error=%3.3g'%(deg,error))\n",
    "    _=ax.fill_between(xi[test_idx],pval[test_idx],yi[test_idx],color='gray',alpha=.8)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<!-- dom:FIGURE: [fig-machine_learning/learning_theory_004.png, width=500\n",
    "frac=0.85] This shows the folds and errors as in\n",
    "[Figure](#fig:learning_theory_002) and\n",
    "[fig:learning_theory_003](#fig:learning_theory_003). The shaded areas show the\n",
    "errors in each respective test set for the quadratic model. <div\n",
    "id=\"fig:learning_theory_004\"></div> -->\n",
    "<!-- begin figure -->\n",
    "<div id=\"fig:learning_theory_004\"></div>\n",
    "\n",
    "<p>This shows the folds and errors as in [Figure](#fig:learning_theory_002) and\n",
    "[fig:learning_theory_003](#fig:learning_theory_003). The shaded areas show the\n",
    "errors in each respective test set for the quadratic model.</p>\n",
    "<img src=\"fig-machine_learning/learning_theory_004.png\" width=500>\n",
    "\n",
    "<!-- end figure -->"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nrquVYaOJPKZz7kopevfuzS233OJXnH379u28+uqrdOnShSeffLL6RY1I4y3+fujQIf2Ck8Yn//vf\n/6qn43VHRIIaY/eHNm3a0LFjR1avXs0LL7xQ7eBTUlIYOXIke/fu5brrrtPxd5NhOue+cuVKvv76\na3JycupstZeXlzN37lwaN27M1KlTvca6I4F7/L158+YA7N+/X7/gpPHKwYMHycvL89r7jETPT0SY\nOXMmt956K++//z7Lly+vrjvppJO48soreeutt3jyySfDbpvGO6Zz7tOnTycjI4Ozzz67zpb78uXL\n2bFjB6NGjaJPnz5hstB/nPF3pZTHVE49wKpxxW63k5WVRXFxMZWVlbXqQx1n94XTwV9zzTW89tpr\nNeLsl19+OSeffDLjx4/nu+++i4h9mtqYyrl//PHHrF69mgsuuKDOWR83bdrEW2+9Rc+ePSkoKDBF\nnN0X3iZ50gOsGjAc+8iRIzly5Eh1mdVqJSMjI6i57A1BRLDb7fTp04eUlJTqHyCLxcLNN9+MiHDj\njTd6nMZAE35M5dxnzpxJ06ZN6dmzp89W+9GjR5k3bx7p6elMnz49JFMLBBtv3Wk9wKoBYzIw95eC\nKisradq0adBz2RtCYmIib7zxBrfffjvl5eXVNqenp3P11Vfz+eefM3Xq1AhbqQGTOfcZM2aQn59f\n59uo/+///T/27t3LHXfcwXnnnRcm6xrGlClTaNy4ca3y4uJiPbiqibqe3ZlnnsmBAwd46KGHql+y\nuuCCCzjllFN49NFH2bRpU4Qt1JjKuSckJJCTk+Oz1b5lyxbeeecdzj//fO688856LYwdCXJzc5k9\nezYtW7asVacHV+Ob48ePk5CQ4LHOzD27a665hoqKCv71r39RVlaGiDB8+HCUUtxwww06eybCmMq5\n14Vz4Y1mzZoxadIkv+ebMQu5ubns3r2b1NTUWnV6cDV+mTVrFhUVFbXKIzmA6g+nnnoqixcvpqSk\nhOeff56qqioyMzMZPHgw69ev5x//+EekTYxrosq5v/3222zfvp0RI0ZwwQUXRNqceuM6aOaKWbvg\nmtBRWFjI2LFjqz+np6ebZgDVH/r168e0adP46quvWLp0KQC9e/emQ4cOPPzww3r2yAgSNc59z549\nLF++nC5dujBhwgS/p/81I3pwVQNGhsxf//rXGtklR48eZdGiRaYZQPWHcePGMWzYMBISEigvL8di\nsZCXl0dpaSmjRo2KtHlxS1R4SKUUdrsdi8XCww8/TKtWrSJtUoPw9Paq1Wo1dRdcE3wmTJhAeXl5\njbJoDM+JCPPnz+cf//gHFRUVVFZW0rZtWy655BJWrFjBypUrI21iXBIVzv3TTz/lu+++Y/DgwQwY\nMCDS5jQY59urzpa6iFBZWcm4ceP01ARxxLZt2zyWR2N4TkTo2LEjSimeeOIJSktL6d+/Py1atGD0\n6NEe56PXhBbTO/ejR4/yyiuv0LZtWx555BG/JhKLBnJzcykuLmbDhg3VIaaSkhI9NUGcoJQiMzPT\nY100h+e6dOnCzz//zPz580lKSuL6669n69atPPDAA5E2Le4wvXN//fXX2b9/P2PGjOGUU06JtDlB\np1u3bh4nO4vG7rnGf1544YVa86SD+TNk6uKSSy5h0qRJfPHFF6xcuZKzzjqLLl268NRTT+nc9zBj\naue+a9cu3n77bXr06MGYMWOiJqc9ULzNABiN3XONb+x2Ozabjby8PCoqKhg4cCA2my2qMmTqYvz4\n8fTr14/ly5fzww8/VOe85+fnR9q0uMK0zl0pxUsvvURSUhIPPvhg9ayKsYie+z0+cC7A4fqj/d//\n/pfJkyebaoqBhiIivPDCC7Rp04a1a9eSnp5Onz59ePfdd/nPf/4TafPiBtM6d+cg6qBBg7jssssi\nbU5I8ZQ906hRo6junocSTzMmRgMFBQW1FuCI1fBbWloan3zyCePGjePYsWP06dOH9PR07rjjDj24\nGiZM6dyPHz/OkiVLYm4Q1Rvu2TNgzFU/dOhQnTnjgUOHDvHTTz9F2oyA8RZmi9XwW+vWrenbty9H\njhxh3bp1XHvttWzbto1HH3000qbFBaZ07m+++Sa//vort956KyeffHKkzQkLzuwZ54x6VVVVOnPG\nCy1atKBDhw6RNiNgvC0mE8vht8aNG/PNN99gt9tp3Lgxp556KjNmzGDHjh2RNs10rF27lpdeeqnW\nuw/1xXTOfd++fbz55pt069aN2267LWYHUb0xc+bMWmWx2nWvD6+99hqzZ8+OytBMz549a5VFe3aM\nP8yaNYu2bdsyb948+vfvz/Hjxxk9enSkzTIdTzzxBHfccUfwfJ5SqsEb0BfYCGwCxte1/9lnn608\ncfDgQXXmmWeqpKQk9corr3jcJ9YREQXU2kQk0qaZgk6dOqmEhAQFKJvNpoqKimrtA6xXQdB1fTZ3\nbRcVFSmbzVb9d01PT1fZ2dlKRLzaH4t88sknKiEhQXXu3FldfPHFSkTUunXrIm2WaThw4IBKTExU\nqampPrURiLaD4ditwGagA5AEfAGc5usYb8592bJlClD9+/dXR48ebeDjik5sNptH526z2SJtWsR5\n6qmnaj2XlJSUWl8Cszj3oqIilZKSUsvmuXPnBv/hRAF///vfFaCuvvpq1axZM/XHP/5RVVZWRtos\nUzBq1KigazsYzr0n8KbL5/uB+30d48m5l5eXq1NPPVVlZGSoTz/9NCgPLBrx5BBEJG5aeL5o0aKF\nXz98ZnHu+oe6JlVVVeqxxx5TU6dOVcOHD1eAWrhwYaTNMgXJyclB13YwYu5tAddJMrY7ymogIvki\nsl5E1jtXbnFn5MiR3HXXXZx11llBMCs6cWbOOHPfrVYrSinuuOOOuJ93xtMbnRD5bBNv2o637Ji6\nEBEeeOABLrzwQs4991xycnIYMWJE3Ov66NGjtZZYdNIgrfj7K+BtA64B5rh8Hgr809cx3sIymtpM\nnTrVr+5arHP48GGVlJSkW+4xQFlZmWrTpo2yWCxxr2snbdq0MWXLfTvgmuOVBewMwnk16OwZJ02b\nNuXuu++uVW7mbBNPL6eZ2d5wkZyczG+//VZjHnuIT10DHDt2jPbt29cqb7BW/P0V8LYBCcBPQHt+\nH1A93dcxuuXuPzp7RqlFixaprKys6vvOyMgIWkZBsDdf2TLZ2dlx2zJ1x5Om403XRUVF6sQTT6y+\n927dulVrxRTZMsb16Af8gJE1U1DX/tq5+0+8d+2LiopUo0aNAuq+m8m5azyjdV07caJx48Z1/viH\n3bkHuukvgP94EkFSUlLctADr4wS0czc/3rLC5s2bF2nTwkJ9f9wC0bbp3lDV1MQ1e8b55trx48fJ\ny8uLiwyD4uJij+XxmnESK7hnhbVq1QqlFGPHjo2L7JlwZFJp5x4F5ObmsmXLFhYtWkRSUlJ1eTzM\nO+NpIROI7flY4gWnrpVSPProo4gIBw4cQKnYn1PJm36DqWvt3KOIgoKCWtOlxnKGQXl5OWVlZbXK\ndcZJ7PHYY485x++qiWVtjxw5slZZsHWtnXsUES8vxdjtdnJyckhKSqKyspI//vGPMbdakaYmO3d6\nzp6ORW3bbDYefPBBANLT00Om64SgnUkTcrKzsz3GoGMpROFcrch1UYsvv/xSO/QYJ161ffToURYt\nWhQSbeuWexTh6aUYEeHhhx+OkEXBJ55WK9L8jidtJyQkxFT4Ldza1s49inDPnHFmGDjngI6FDIN4\nCT1pauKePdO4cWMqKyu59957YyZ7Jtza1s49ynBmGFRVVTFjxgwsFgtHjhwBYiN7Jisry2N5LHXP\nNZ5xzZ75v//7P5RS7Ny5M2ayZ1q2bOmxPFTa1s49iikoKIiZ+Tmcg6jbtm2rVaezY+KP6dOn1yqL\nRm07dW2xWNi9e3et+lBqWzv3KCZWQhjOgSZPA2o6OyY+iQVtu+rameYpIqSmpoYl80tny0Qx3jIM\nvHX/zIqngSYwHPuWLVvCb5Am4sRC9ownXSulSE9P59ChQyG/vm65RzGeMgwAdu/eHVUDULHQStME\nF2/aLi4ujhptR1rX2rlHMe4ZBq4UFxczatSoqPgStG7d2mN5NLXSNMGlLm1Hw+BqOKYY8IV27lGO\nM8PA05egrKyMCRMmRMCqunEdaCopKalVrwdRNb60bebBVae2PYWVwqlrHXOPESLdBQwE9zf1lFKI\nSPWgk81mY/LkyXoQVQNEt7ZdCbeutXOPEbwNQAGsWLGCK6+8MswWecfbQFNqampYBpo00UU0JQ54\nSw5o06ZN2JMDdFgmRvA2AGW1Wunfvz9t2rQxTYzSW4vr8OHDYbZEEw140/aePXtM92a2N23/8ssv\nYbZEO/eYwX1qgvT0dAAqKysBQ1xmGYRq166dx3JPsVWNxl3bqampANVhPDMNsJopOUA79xjCdWoC\n5xfAldLSUsaPHx8By2oOoO7Zs6dWvR5A1fjCVdvOhosrkRxgddX2rl27atVHTNv+rscXzE2vMxl6\nRMTrCvOHDx8Oqy2e1ssEqhe+9rbSe31Br6Ea0/jSdrjxpG2LxVJjTdRIaVu33GMUX93A1NRUsrOz\nw9aN9TbIdOzYMaZNm8aWLVt0ZozGb3xpOysrK6zhGU/arqqqIiEhgf3790dU29q5xyjeBqGcbNu2\nLWwvOflKWbvnnntCfn1NbOFL2zt27GDkyJFhc/DetF1RUUHz5s3DYoM3tHOPUdwHoaxWa619ysrK\nQhqndMYildvamE7atWuHiITs+prYxNfbq2CsbnT33XeH1Ia6tG2K5AB/4zfB3HRcMvx4i1OKSEiu\n5y3O7tySk5ODGot0BR1zjxsiEX+vS9spKSmm0LZuuccJ3uKUSinS0tKCvlSftzg7GHHROXPm6Di7\npsF407XFYsFisZCVlcXChQuDek1f2jbVFNX+/goEc9Otm/BTV2sDUKNGjWrwNWw2m8/WVKh6Cq6g\nW+5xgz+6tlgs6plnnmnwdaJN2/oLEEc4BerriwCorKysgLuV/nzJcKSGhRrt3OMLV8drtVq9ai8j\nI0MtXLiwXuePRm3rL0Ac4qvRfpFFAAAgAElEQVT14dwaN27sl4P39weDEMciXdHOPX6pS9sWi0XN\nmjWrzvP4+4NhZm03SMjANcA3QBXQ3d/j9BcgsvjrjAHVsmXLGq0dV9FnZGSopKQkv84T7Jc5fKGd\ne/zij7YtFosSEXXiiSd61LYzxOKPrkXEtNpuqHM/FegIvKede/TgbzfTvWUSyP7OLTs7O+z3p517\n/FIfbQMqNTVVJSYmBnRMOMIw7gSi7QZlyyilvlNKbWzIOTThx58ceHe8ZQf4IiUlhSlTptTHRI2m\nXtSVA++Nw4cPU15e7vf+0TAXkk6FjFNcJ2JasGCBz7dZ64OpUsI0cYVT20VFRUHVtdVqRUSiRtt1\nLtYhIm8DnuaxLFBKLfP3QiKSD+SDXhvTbDhFWlBQ4HXBD39JSUmJCuEHE61tc+Kq661bt2KxWKqn\nwA6UqNS1v/EbXxs65h4zBBqzTExMVBkZGWEfWPIFOuau8UCg2nYOqppF10qFMeauiT3c4/EZGRkk\nJSXV2Mc5H4zNZmPevHns3buXqqoqPbujxtS4x+Pd5zVKTEwkIyOjOvSyaNEilFJRq+sGOXcRGSwi\n24GewGsi8mZwzNJEEtd4/N69e5k7d261s48F0WviF6e2lVIsWrSohq5jraEiRks/vHTv3l2tX78+\n7NfVxAciskEp1T0S19ba1oSSQLStwzIajUYTg2jnrtFoNDGIdu4ajUYTg2jnrtFoNDGIdu4ajUYT\ng2jnrtFoNDFIRFIhRWQP4O0990xgbxjN8YZZ7ABtiyd82WFTSrUMpzFOfGjbLM8NtC2eMIsdECRt\nR8S5+0JE1kcqR9mMdoC2xcx2+IuZ7NW2mNcOCJ4tOiyj0Wg0MYh27hqNRhODmNG5F0baAAdmsQO0\nLZ4wix3+YiZ7tS21MYsdECRbTBdzdyIi84HtSqkHIm2LRhMqtM41ocKMLfeoR0SuF5GNInJQRHaL\nyAIRaRZpu+qLiFwiIt+LSKmIvCsiXtcwE5Ecxz6ljmMudakbLiIbROSQiGwXkekikuB27Osisl9E\ndonIM671budRIjIy+Her8Zc41/ljIvKViFSIyCMe6luKyAsicsChZ7tL3TcicsRlqxCR5cG+n7hy\n7p4cRYj4EDhPKZUGdMBY8WpSME7sxdkFdF+B7C8imcBS4EEgHVgPvOzjkBeBz4AMoABYIiLO1K0U\n4G8YqV49gEuAu12OfRbYDZwInAVcCIxxs6cFcD/wjb/3EG9onQe+fz10vgm4F3jNS/1SYBdgA1oB\n/+esUEqdrpRqqpRqCqQCW4FX/LXVX0zj3EWkq4h8KiKHReRlINml7koR+dzxK/iRiJzhUtdNRD5z\nHPeKiLwsIpMcdb0dLcT7RGQXMM+P87URkX+LyB4R+VlE7gj0XpRS25RSrnmqlcAfXK7xrIg86881\nReQREVkiIkUicggY4aWskYg8KSI7HduTItLI13PwkyHAN0qpV5RSR4FHgDNFpJP7jiJyCtANeFgp\nVaaU+jfwFXCV47nMVEp9oJQ6rpTaAdiB81xO0R5YrJQ6qpTaBbwBnO52mceBpzFPTnJAaJ1Hv84d\n975AKbUSOOxeJyKXAe2Ae5RSB5VS5Uqpz7xctxeG8/93ALb6h79LNoVyA5IwXvwYCyQCVwPlGK2A\nbhituR6AFRgObAEauRx3p+O4IcBxYJLjvL2BCmCaY//GdZzPAmwAHnKcuwPwE9DHcb4bgQM+tmyX\nezofOIixZNdvwGVe7r2uaz7ieBaDHPs29lL2KLAWQygtgY+Ax3w8h+w67uVGx7FPATPdbP4auMrD\nvQwGvnMrewb4p5d7/w8w1eXzaGAhRgu/reM6g13qz8VoUVkwlnYcGWntap3Hn87d9ikCHnErewh4\n01G3D/gEuNDL8XOB+SHRW6QF77jBXsBOHAO8jrKPHKKf6fzjudRtxOiy9wJ2uB33PzfRHweSXep9\nna8HsNWt7n5gXgPura1DpKd4qfd5Tcex77vVeyrbDPRz+dwH2OLtOQRg//O4OGBH2YfACA/7DgXW\nupVN9iRe4CZgO5DpUnYqhgOowHAW851/WwwHtR7o6fj8HtHn3LXOY0Dnbvt4cu6FDv3egvFjfD3G\nD0mm234pwCGgdyj0Fq7YXF20AXYoxx07cL7CbQOGi8jtLnVJjmOUh+O2uZ17jzK6WU58na8SaCMi\nB1zqrMAHgd6QE6XUDhF5A3gJozXljs2Pa7rfk6eyNtR87b3YUebE/Tn4yxHAfZCsGR66o/7uKyKD\ngKnApcrRrRcRC0Zr5zngT0BTjFbNNIzY5hjgS6XUmnrcg1nQOo8NnddFGcYPzvOOzy+JSAFGCHKZ\ny35DgF+B1fW4Rp2YJeb+C9BWpMaKtdmOf7cBk5VSzV22FKXUi16Oa+d2bvdcT1/n2wb87FaXqpTq\nByAiuVJzlNt9y8YzCcBJXup8XtPLPXgq24nxBXKS7SjzuL+IZNdxL84FJL8BznQ5ronjXjwNaH4D\ndBCRVJeyM133FZG+wGygv1LqK5f90jH+ds8opY4ppfZhxEydz+ESYLAYWTS7MH4AnhCRZzzYYVa0\nzmND53XxpZd7cWc4sNDtRzt4hKI7EOiG0aLYihFTTMD4RXPGIrtjCKMHIEAT4AqMUWbncbc7jhtI\n7Vjkdrdr+TqfFSMscB9GvM4KdAbOCfB+cjFEJxhCXA0sdamfjyNUUdc1MbqmRW7n91Q2CaOL3xIj\nG8W92749kHtwOW9LjJjqVRiDf9NwC7247b8WIzMgGSMGfwBo6ai7GCMG2cvLsT8B4x1/y+bAq4Dd\nUdccaO2yfQTcBaRFWr9a53Gp80THfi84bEoGrI66dGA/hvO2Yoyt/ErNEGQWRvjxpFDpzRQtd6XU\ncQyhj8B4KNdhpBKhlFoPjMIYmNuPkYI0wu24WzCcSB6wAjjm41q+zlcJ9MdIw/sZIyNjDpAW4C2d\nhiHAIxhxu42Oazpp5ygP5jUnYcSkv8TIUPmUIKSlKaX2YAh+Msbz6oERQwRARGaJyCyXQ67HcCz7\nMUIvVzvOAUaaWRrwukvLaaXLsUOAvsAejL9LBcbgI0qpA0qpXc4Nw7kdUkodbOg9hgut85jS+WyM\n8MsNGCm/ZRhjTiilfgUGYKT5HsRosAxUNTOLhgJrlFKbG2q7N0z7hmp9EZGPgVlKqXmRtsUTIpIE\nfAGcoZQqj7Q9muhE61xTF6ZouTcEEblQRFqLSIKIDAfOwMiPNiXKyPE+VQteEwha55pAMUu2TEPo\nCCzGyK7YjBEG+CWyJmk0QUfrXBMQMReW0Wg0Gk0MhGU0Go1GU5uIhGUyMzNVTk5OJC6tiQM2bNiw\nV0VoDVWtbU0oCUTbEXHuOTk5rF+/PhKX1sQBIuJt8fWQo7WtCSWBaFuHZTQajSYG0c5do9FoYhDt\n3DUajSYG0c5do9FoYhDt3DUajSYG0c5do9FoYpCgOHcRmSvG6udfB+N8Go1Go2kYwWq5z8eYqjVq\nsdvt5OTkYLFYyMzMJDMzE4vFQk5ODmPGjKmuy8nJwW63R9pcjcYvXHXtScta2zFMEBciyAG+9mff\ns88+W0WaoqIiZbPZlIiojIwMlZSUpDBWT6lzS0lJUUVFRZG+BY0XgPUqzAtxKBNqG1Ai4reutbbN\nTyDajsuYu91uJz8/n+LiYpRS7Nu3j+PHj/t9fGlpKXl5ebqlozEdRUVF3HLLLRQXGy8yqgAnBtTa\njh3C5txFJF9E1ovI+j179tR9QAiw2+1kZWWRl5dHaWlpg89XXFxMfn6+/hLEOZHWtt1up23btogI\nQ4cO5dgxrws0+Y3WdgzgbxO/rg2Th2WKiopUYmJiQF1UfzebzRb2+9F4hzgKyxQVFQUUUtTajm4C\n0XZchGUqKyspKCigvDw0i8IUFxfrASlNRCgoKAgopBgoWtvRS7BSIV8E1gAdRWS7iNwSjPM2lIUL\nF5KamkpCQkJ1DNIbiYmJZGRkICJkZGRU/99ms/GXv/yFdu3a+TxeKaW7spqwceutt9K0adM6dQ0g\nIgDVWrbZbDW03aZNG5/Ha21HKf428YO5haPrOnfuXGW1Wv3uevqTIVBUVKSSk5N1V9bkEONhmby8\nvDo1aLValYj4re1Fixb5Fd7R2o4sgWg7Jr8ABw8eVI0aNQpJ2ldRUZHKzs6u89yBfLE0wSVWnXtV\nVZV65JFHQpbOWFRUpLKysoLWGNIEn7h27uXl5eqcc84Ji+N15hKH4oumqT+x6twnTpwYNsdbVwNG\n6zoyxLVzLyoqUq1atQpLt7KoqEg1btxYd2VNRiw6d1dde3sxKZg6W7RoUZ3ZZVrX4ScQbcdUtsyT\nTz5Jfn4+u3fv9lifkpLC5MmTg3a93NxcZs+eTXZ2ts/9tm7dGrRrauKPBQsW1NC18R2vSbC1nZeX\nx7x588jMzPS6j9a1yfH3VyCYWyhaN8uWLYtonLCqqko1a9ZMxylNADHUcj9y5IjXFnSgg6b1pWXL\nlhG9vuZ3AtF2THwBvv/+e5+OVUSCej1v1PWilI5ThodYce5VVVUqNzfXFLquK0FBazs8BKLtqA/L\nVFRUcMMNN5CUlERaWprHfeoKmwSL3Nxc5s2bh81m81hfWlpKQUFBWGzRRD9Lly7FbrebQtfPP/98\nta6defOuaG2bj6h37iNGjOCzzz5j7969HDx4sJbwgh2LrIvc3Fy2bNnitV7HKTX+cPjwYUaNGkVi\nYiIHDx6sVR8pXX/wwQdGl98DWtvmIqqdu91uZ/HixTXKEhISarxdWlhYSG5ubtht89aqCldrSxPd\nPPbYY+zfv7/GlBmub5pGStfnn39+xHsSGv+Iaufuab6Y8vJymjZtSlVVFVu2bInIFwBgypQpNG7c\nuEaZiHDkyBE9V4emTtwbLWCMj9lstojqGuCZZ54hISGhVnlxcbHWtZnwNzgfzC0Yg04rV66M+EBT\nXdT1NqsehAoNRPGAamVlpXr//fe95rKbRdsLFizwOhWH1nXoCETbUdlyP3LkCKNGjfLYegDzdA9z\nc3MpLi7myJEjHruyehBK487ChQvp1atXrV6fE7Noe9iwYfzyyy+ccMIJteq0rs2BZ+9ocm6++Wa2\nb9/usS7cA03+0KRJEw4dOuSxTg9CaZwsWLCAkSNHAoaDtFgsVFVVVdebTdvNmzf3+sKg1nXkibqW\n++zZs3nllVdqlJlhoKku9ACrxhfOpR8rKyury6xWqymSA3yhdW1eos6533PPPbXKlEkGmnwxefJk\nUlJSapQlJyebqiWmiRwTJkyoteiGWZIDfOFJ11arVevaBESdc/eU8wvm7wbm5uZSWFhY4wWn48eP\nM3ToUJ1hoPGq32jRtWtLvbKykr/97W86KyzCRJ1zb9GihcfyaOgGOl8EWbRoESJCVVUVSulVbjTR\nHd5wJg6UlJTQvHlzAPbu3au1HWGiwrnb7XbatWuHiLB///6Iv4XaUB544IFab/npDIP4xG6307Zt\nW48t9GjTdatWrWjUqFGtcq3tyGB65+4caHLNjjHLW6j1JVq74JrgYrfbGTVqFDt37qwui4bkAF/o\n7BnzYPpUyIKCAkpLS2uUOQea9u7dGyGrGkZ2drbHhY2joQuuCR4FBQWUlZXVKHNNDohGtLbNg+lb\n7rHYyvWUYQCwb98+PQgVR8STtvXUBOHH9M69Xbt2HsujuSXgmjkjIjRt2hQw3rzVg1Dxg6e3OyF2\ntO2O1nV4Mb1zHzFiRK2yaBto8oQzc6aqqoqMjIxa9XoQKvZp0qRJrbJY0rYnB691HT5M6dztdjs5\nOTlYLBamTZtGo0aNaNu2bdQOoNZFLHbPNZ5x1fbmzZtp3759dQ8u1rStdR1ZTDeg6syOcQ6iHjt2\njKSkJKZNmxYzondHD0LFB+7aBti1axezZ8+OSW1rXUcW07XcPWXHHD9+PKa7cp4GoRISErjtttsi\nZJEmFHjSdllZWcxqW09NEFlM59zjsSvnPsAKxtqw9957L9nZ2XoAKkaIN227D65aLBYqKyu5++67\ndVZYGDCdc4/m17AbguvUBFartbp827ZtOsMgRohHbTt1rZSqnvRv165dOissDJjOuU+ePBmLpaZZ\nsZBB4C8FBQU1pn0FnWEQK9x+++21yuJJ2y+99FKtMq3t0BEU5y4ifUVko4hsEpHx9TmHM4tg6NCh\nNRYoiLUMgrrw1kX3NDAVj7hmm0RDt97V3gcffLDGvEha277LNQ3E3/X4vG2AFdgMdACSgC+A03wd\n477OZFFRkUpJSamxDmNycrJ66qmngrsAYRRgs9k8rktps9kibVrEKSoqUo0bN65zvU5MsoaqJ10n\nJCSoyy67TFVUVAT/AZkcre2GE4i2g+HcewJvuny+H7jf1zHuzl3/0X/Hk0NISkpSixYtUh988EGk\nzYso/urELM5d67om3hpxejHt37Hb7Wrz5s1e68Pt3K8G5rh8Hgo842G/fGA9sD47O7uGwWZf6T3c\nFBUVKZvNpkRENWrUSDVt2lRNmzZNAWrJkiWRNi9i+KuTcDt3b9r2Zq/RYY5PXLXt/Ns5f/Di3cn/\n+OOPKikpSQ0aNMjrPoFoOxgxd/FQpmoVKFWolOqulOresmXLGnXxmEXgC9epCdasWcNvv/3GDz/8\nQOvWrbn55pvZtm1bpE2MCGadi8WbtrWua+OeFWb4Kz3vDMBdd92F1Wqld+/eQTlfMJz7dsB1dq8s\nYKeXfT3i6WWHeMoi8EXXrl3Jz89n/vz59O/fn7KyMgYOHFgroyYeOPXUU2uVmVkn3l5OmzJlSoQs\nMg86K6wmb7zxBsuXL+eSSy4hLS0tOCf1t4nvbcOYwuAnoD2/D6ie7usY95i7UkZ37cQTT1SAatGi\nRdx30VzZs2ePSktLUx07dlR5eXkKUGPHjo20WWHD2ZXHEdJo1qyZEhGvXXlMEnP3ZPv06dOD92Ci\nGB2K/Z1jx46pjh07qtatW6vp06erefPmed03EG03uOWulKoA/gq8CXwHLFZKfRPoeXJzcxk2bBhW\nq5WNGzfGTXqYP2RmZjJx4kQ2btxIo0aN6NWrF0ePHuXIkSORNi3kOOdjcU0FraioYNGiRWzZssX0\nOnGGIc455xy6detW/SJPvKNDVr/zz3/+k40bNzJgwACPM4XWl6DkuSulXldKnaKUOkkpVe8+ss1m\nY/To0bjH5DVw22230bFjR5YuXcrVV19Np06deO2116ioqIi0aSHF03ws0dZ937NnD99++y033nhj\npE0xDXreGYNdu3YxceJEunTpwhlnnBHUc5vqDdW//OUvPPPMM5E2w5QkJCQwa9Ys9u/fz2uvvUaj\nRo14+eWXueCCC2I6/h4LL760bNmSkpIS8vPzI22KaXCfT6lJkyZUVlYybtw4RCQqXlALBuPHj6es\nrIwBAwaQmJgY1HObyrlrfNO7d2+GDBnCqlWr2LNnDykpKaxduzamu/qxshJXkyZNSE1NjbQZpsI1\nK2z69OkAlJSUAPGRPfPhhx+yYMECLrroIrKysoJ+fu3co4ynnnqKxMREFi9ezAUXXMC5557Lk08+\nyfLlyyNtWkjo2rVrrTIzZ8ho6ofTubsSbeG3QKioqOC2224jMzOTP//5z7Xm0woG2rlHGVlZWUyY\nMIGvvvqKL774gry8PE444QTy8vJiZv4Z1/lYli1bBkCbNm1icrUijUEshN8CYebMmXzxxRcMGDCA\nZs2aheQa2rlHIffeey8dOnRg8eLFAIwePZry8nJmzZoVYcsajmt2jHK84GKxWJg+fTpVVVVRkSGj\nCRxvYTZvYblopqSkhAceeIDTTz+drl271phMLpho5x6FJCUlMWfOHPbt28eKFSs48cQTeeyxx2jd\nujXff/99pM1rEJ6yY6qqqmK2e64x8JQ9Y7FYePjhhyNkUei49957KS0tZdCgQSQlJYXsOtq5RykX\nXXQR1113HatWrWLHjh2kpqaSmJjI008/zXPPPRdp8+pNvHXPNQbu2TMWi4UTTjiBiRMnRs30zv7w\n7rvvsnDhQi6++OKQDKK6op17FPP000+TkpLCCy+8gFIKq9XKO++8w+23385HH30UafPqhX65JX5x\nzZ4ZMWIEv/zyC1u3bkWp2Fi1qaysjFtvvZUTTjghZIOormjnHsW0atWKqVOnsmnTJv73v/8hIowc\nOZKmTZvSv39/tm/fHmkTA2bMmDG1ynR2TPzx9ttv1yqL9uyZyZMn8+OPP3LVVVeFJS1WO/coZ/To\n0XTt2pWlS5dy8OBBmjVrxm233caRI0f485//TFlZWaRN9Au73Y7NZuO+++6rUa6zY+ITbzOfRmt4\n7quvvmLatGn06NGD008/PWSDqK5o5x7lWCwWioqKOH78OC+88AJgZBjcfPPNbNy4kalTp0bYwrpx\nZsi4fnGtVitFRUU6OyZO8RaGC3WcOhRUVlYyatQoUlJSGDBgAAkJCWG5rnbuMcBpp53Ggw8+yOef\nf866desA4+Wfu+++m/T0dNOHZzxlyFRWVkZ1F1zTMDxlzwD07NkzAtY0jGeffZaPP/6YgQMHkpGR\n4XPf3377LWjX1c49RpgwYQKdO3fm5Zdf5vDhwwD84Q9/ICEhgcLCQubMmRNhC72jM2Q07rhnz4Ax\nv9LixYujKnNm48aN3HfffXTu3Jlzzz3Xr3CMe0OnvmjnHiMkJCRQVFTE0aNHefHFF6vLExMTee21\n17j11ltZsmRJBC30TvPmzT2W6wyZ+MZ11aaEhITqGVCLi4sZNWqU6R18RUUFw4YNIyEhgWuvvdav\nnPZGjRpx/vnnB+X62rnHEGeeeSb33XcfGzZsqA7PAAwfPpy2bduSm5vL6tWrI2jh77hOMbB///5a\n9TpDRuOkoKCg1tTWZWVlTJgwIUIW+cfjjz/OunXrGDJkCK1atfK5b0lJCVOnTqWkpMTjimP1QTv3\nGOPhhx/mzDPPxG63s2fPHgCSk5O5/fbbadasGVdeeSWff/55RG30NMUAUD3lqc6Q0bgSjWG7DRs2\n8Oijj9K9e3fOOeecOsMx//3vf9m2bRvnnXde0Kb+1c49xkhMTOTVV1/FYrEwZ86c6rne09LSuPPO\nO7FYLNx+++0RnQPe0wAqGHn7SimdIaOpga/wnBnnfi8tLWXo0KE0a9aMq666qk5nffDgQdasWUOP\nHj246KKLgmaHdu4xSPv27XnuuefYsmUL//nPf6rLW7VqxT333MOAAQNYsWJFxBy8txbXzp0Brauu\niRO8Zc44MdPbq0opbr31Vr7//nuuu+46WrRoUecx7777LpWVldx66600btw4aLZo5x6j5OXlceON\nN/Lf//6Xb7/9trq8VatWNGvWjO+//54//vGPfPbZZ2G3rU2bNh7L9QCqxhPumTNWq7XWPmZ5e3Xm\nzJkUFRXRt29funTpUmc45ujRo6xevZozzjiDAQMGBNUW7dxjmMLCQnJycnj++eer4+9gdGUrKirY\ntGkTF1xwAW+99VbIbXEdQN21a1etej2AqvGF67wzVVVVHveJdAx+7dq1/O1vf6Nz58707dvX44+Q\nO1arlSuuuIJbbrmFtLS0oNqjnXsM06RJE15//XWUUvzrX/+qEedu2bIl99xzD6mpqfTr14+ZM2eG\nzA73AVTXcQC9AIcmULz18Fq2bBlmS35n9+7dXH311aSnp5Obm0tycrJfxyUkJHD++edzww03BN0m\n7dxjnE6dOrFkyRJKSkooLCysEWfPzMzkvvvu4+STT2bMmDFMmTIlJDZ4G0BNSUnRC3BoAsZbDH73\n7t1kZWWFPfZeWlrK4MGD2bNnD8OGDfMrzg6wbNkyVq9eTadOncjMzAy6Xdq5xwF9+/ZlxowZfPfd\nd7z88ss16lJSUrjjjju45JJLKC8vZ8uWLUG7rjMU4235P0/hGY2mLlxj8O7s2LEjrC84lZeXc801\n17BmzRpuvPFGOnTo4NdbqDt27GDlypXs2LGD8847LyS2aeceJ9x5553k5+ezevVqVqxYUaPOarVy\n7bXXkpmZybJly/jzn//M/Pnza+SgB4prKMYbegBVU1+cMXhPDj5cLzhVVVVx00038frrr3Pttddy\n7rnn+j1H+5IlS0hOTuaBBx6gSZMmIbFPO/c44tlnn2XAgAEsX76cZcuW1XLeiYmJVFVVsXnzZm66\n6SauuOIKvvvuu3pdy1soxokeQNUEA18vOIVyBSelFGPHjsVut3PllVfSq1cvvwZQAb7++mu+/fZb\nrrzySnr37h1025xo5x5HWK1Wli5dylVXXcXrr7/O0qVLazn4Jk2acO+99zJgwABWrVrF6aefznXX\nXcfu3bsDupavFrseQNUEC1+9v1Ct4FReXs6oUaN4+umnufjii+nTp4/f0/hWVVWxZMkSMjMzefDB\nB4P2NqontHOPM6xWK4sXL+aGG27grbfe4sUXX6z1MpPFYuGKK65g0qRJXHTRRaxatYp169Zx5MgR\nPvzwQ69x+aKiItq1a+cz5miz2fQAqiZo1PWCEwQ3B/7AgQNcfvnlPP/88/Tp0yfgRa4tFgsDBgxg\n5MiRdO7cOSg2eSM8s8ZrTIXFYsFut9OkSRPmzJlTPcue+4h9Wloa1113HUOGDGHTpk2Ul5czfvx4\nfvjhB9q3b0/r1q3JyMigd+/etG7dmvz8fJ8rP+lQjCbYOBsJBQUF1euteqK4uJicnBwmT55c74bF\nzz//zBVXXMGPP/7IjTfeyHnnnRfQwhvHjx/HarXSuXNncnNzQ74ak265xykiwuzZs5kzZw4lJSVM\nmjSJDRs2eNw3MTGRhIQEysvLWbFiBTNmzOCcc84hJSWFr776iokTJ5KXl+fRsVutVp3Lrgkpri84\neRpgdVJcXMxNN91EZmZmQPH48vJyZsyYwRlnnMG2bdsYPXo0F1xwQUCO/fDhwzz00EO8//77XHjh\nhX6nSzaEBjl3EblGRL4RkSoR6R4sozTh45ZbbuHzzz8nOzubwsJCnnrqKTZt2uR1/3Xr1vHUU0/x\nyiuv8Pnnn/PLL79UL81I2CUAAAhpSURBVA7iCecbhToUowkHdYVpysvL2bdvX3U8fujQoT4nH/vf\n//5Ht27dGDduHO3bt+euu+6ic+fOfmfFgBH7X7hwIYcOHaJnz54hD8c4aWhY5mtgCPBcEGzRRIhT\nTjmFL7/8kgkTJlBYWMjf//53TjrpJC699FJOOumk6teiP/jgA+bOnVudBbNv3746z63THTXhxDVM\n42tQ34kzjOMceAXo1asXixcv5uWXX+aTTz4hMzOTkSNHcuaZZwYUX3eyatUqvvzyS6655hpGjRoV\nlsWxAaQhuczVJxF5D7hbKbXen/27d++u1q/3a1dNmDl06BBTp05l1qxZ1YtoNG/enHbt2rFx40aO\nHz/u97lSUlIiEooRkQ1KqYj0JLW2zYOvF+i84brik81mo2vXrvzpT3+iWbNm9XLKa9asYf78+XTp\n0oXly5f7DBv5QyDaDtuAqojkA/mgW3NmplmzZkyZMoWHHnqIZcuW8f777/PZZ5+xefPmgBy7zWZr\n0OBVNKG1bU4mT55Mfn5+QGuSVlRUcMUVV3DWWWdx4oknkpCQ0KCWdllZGR07dmT+/PkNduyBUmfL\nXUTeBlp7qCpQSi1z7PMeuuUe01RWVtKhQ4c6Z96LVGvdFd1y1zix2+3VmTTp6ekcOnSI8vJyr/u3\na9eOu+++2++Jv7xx7NgxEhMTOXbsGBdccAHdunVr0PmcBKLtOkcFlFKXKqU6e9iWNdxUTbRgtVqZ\nMmVKrcGqxMREMjIydEaMxpS4ZtLs3buXefPmee1dpaSkMHHixAZdTynF6tWruf/++/nuu+/o2bNn\n0Bx7oOhUSI3fuC+aYLPZmDdvHnv37tUZMZqoIDc3t3rq6Ycffrh6ygBnw+S6666r97l/++03CgsL\neeGFF2jXrh2XX34555xzTrBMD5gGDaiKyGDgn0BL4ADwuVKqT13H6a6rJpTosIzGX44cOULTpk0B\nYxWl0tJSLBZLwJN5fffddyxcuJADBw4waNAgnnjiCXJycoJub9gGVJVSrwKvNuQcGo1GEymcjh3g\n7bffZunSpTRt2pTu3btz7rnn+pzCt6ysjKSkJCwWCxs3bsRisfD444/z17/+tc4pEcKBnn5Ao9Fo\nMKbhXblyJZMnT+bDDz/kvffe4/LLL2fgwIEcO3aMt956i8rKSnbv3k1JSQklJSUMHTqUs846i6uv\nvpq///3vnHbaaWHLY68L7dw1Go0GY0qOfv360a9fP3bt2sW8efM4fPgwx44do6SkhNdffx0RITMz\nk8zMTE477TR69OjBoEGDaNWqlWmcuhPt3DUajcaN1q1bc//99wNGBszRo0e57bbbOHbsGM2bN6dZ\ns2Z+z98eKbRz12g0Gh+ICI0bN6Zx48aRNiUgdCqkRqPRxCDauWs0Gk0MEpSJwwK+qMgewNuMPpnA\n3jCa4w2z2AHaFk/4ssOmlGoZTmOc+NC2WZ4baFs8YRY7IEjajohz94WIrI/UCyhmtAO0LWa2w1/M\nZK+2xbx2QPBs0WEZjUajiUG0c9doNJoYxIzOvTDSBjgwix2gbfGEWezwFzPZq22pjVnsgCDZYrqY\nu0aj0Wgajhlb7hqNRqNpINq5azQaTQwSNucuIn1FZKOIbBKR8R7qG4nIy476j0Ukx6Xufkf5RhGp\nc774INhyl4h8KyJfisgqEbG51FWKyOeO7f+FwZYRIrLH5ZojXeqGi8iPjm14iO34h4sNP4jIAZe6\noD0TEZkrIrtF5Gsv9SIiTzvs/FJEurnUBe15BGiz1nbgdoRF137aEpvaVkqFfAOswGagA5AEfAGc\n5rbPGGCW4//XAy87/n+aY/9GQHvHeawhtuUiIMXx/784bXF8PhLm5zICeMbDsenAT45/Wzj+3yJU\ndrjtfzswN0TPpBfQDfjaS30/YCUgwB+Bj4P9PLS2Y0PX8a7tcLXczwU2KaV+UkodB14CBrrtMxBY\n4Pj/EuASERFH+UtKqWNKqZ+BTY7zhcwWpdS7SinnkulrgawGXK9BtvigD/BfpdSvSqn9wH+BvmGy\n4wbgxXpeyydKqfeBX33sMhBYqAzWAs1F5ESC+zwCQWu7Hnb4INh/x7jVdrice1tgm8vn7Y4yj/so\npSqAg0CGn8cG2xZXbsH4NXWSLCLrRWStiAxqgB2B2HKVo5u2RETaBXhsMO3A0Y1vD7zjUhzMZ1IX\n3mwNtk4aao/HfeJE22bRdUDnizVth2vKX0+z2LvnYHrbx59jg22LsaNIHtAduNClOFsptVNEOgDv\niMhXSqnNIbRlOfCiUuqYiIzGaAFe7OexwbTDyfXAEqVUpUtZMJ9JXYRLJ/6itV0/O8Kha39tcRJT\n2g5Xy3070M7lcxaw09s+IpIApGF0Yfw5Nti2ICKXAgXAAKXUMWe5Umqn49+fgPeArqG0RSm1z+X6\ns4GzA7mPYNnhwvW4dVuD/EzqwputwdZJQ+3xuE+caNssug70fLGl7WANFtQxkJCAMQjQnt8HNU53\n2+c2ag46LXb8/3RqDjr9RMMGnfyxpSvGIMzJbuUtgEaO/2cCP+JjcCZItpzo8v/BwFr1+yDLzw6b\nWjj+nx4qOxz7dQS24Hj5LRTPxHGeHLwPOl1BzUGndcF+HlrbDfs7mkXX8a7tkArfzfB+wA8OYRU4\nyh7FaD0AJAOvYAwqrQM6uBxb4DhuI3B5GGx5GygBPnds/89R/ifgK4dAvgJuCYMtjwPfOK75LtDJ\n5dibHc9rE3BTKO1wfH4EmOp2XFCfCUbL6RegHKPFcgswGhjtqBfgXw47vwK6h+J5aG03+O9oCl3H\ns7b19AMajUYTg+g3VDUajSYG0c5do9FoYhDt3DUajSYG0c5do9FoYhDt3DUajSYG0c5do9FoYhDt\n3DUajSYG+f/D1N79HelGJwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fb30dc03050>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,axs=subplots(2,2,sharex=True,sharey=True)\n",
    "deg = 3 # polynomial degree\n",
    "for ax,(train_idx,test_idx) in zip(axs.flat,kf.split(xi)):\n",
    "    _=ax.plot(xi,yi,xi[train_idx],yi[train_idx],'ok',color='k')\n",
    "    p = np.polyfit(xi[train_idx],yi[train_idx],deg)\n",
    "    pval = np.polyval(p,xi)\n",
    "    _=ax.plot(xi,pval,'--k')\n",
    "    error = np.mean((pval[test_idx]-yi[test_idx])**2)\n",
    "    _=ax.set_title('degree=%d;error=%3.3g'%(deg,error))\n",
    "    _=ax.fill_between(xi[test_idx],pval[test_idx],yi[test_idx],color='gray',alpha=.8)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<!-- dom:FIGURE: [fig-machine_learning/learning_theory_005.png, width=500\n",
    "frac=0.85] This shows the folds and errors. The shaded areas show the errors in\n",
    "each respective test set for the cubic model. <div\n",
    "id=\"fig:learning_theory_005\"></div> -->\n",
    "<!-- begin figure -->\n",
    "<div id=\"fig:learning_theory_005\"></div>\n",
    "\n",
    "<p>This shows the folds and errors. The shaded areas show the errors in each\n",
    "respective test set for the cubic model.</p>\n",
    "<img src=\"fig-machine_learning/learning_theory_005.png\" width=500>\n",
    "\n",
    "<!-- end figure -->\n",
    "\n",
    "\n",
    "After reviewing the last three figures and averaging the cross-validation\n",
    "errors, the one with the least average error is declared the winner. Thus,\n",
    "cross-validation provides a method of using a\n",
    "single data set to make claims about unseen out-of-sample data insofar as the\n",
    "model with the best complexity can be determined.  The entire process to\n",
    "generate the above figures can be captured using `cross_val_score` as shown for\n",
    "the linear regression (compare the output with the values in the titles in each\n",
    "panel of  [Figure](#fig:learning_theory_003)),"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 0.3934792   0.40553453  0.40553453  0.3934792 ]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import  make_scorer, mean_squared_error\n",
    "from sklearn.model_selection import cross_val_score\n",
    "from sklearn.linear_model import LinearRegression\n",
    "Xi = xi.reshape(-1,1) # refit column-wise\n",
    "Yi = yi.reshape(-1,1)\n",
    "lf = LinearRegression()\n",
    "scores = cross_val_score(lf,Xi,Yi,cv=4,\n",
    "                         scoring=make_scorer(mean_squared_error))\n",
    "print(scores)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Programming Tip.**\n",
    "\n",
    "The `make_scorer` function is a wrapper that enables `cross_val_score` to\n",
    "compute scores from the given estimator's output.\n",
    "\n",
    "\n",
    "\n",
    " The process can be further automated by using a pipeline as\n",
    "in the following,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'linear': LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False),\n",
       " 'linear__copy_X': True,\n",
       " 'linear__fit_intercept': True,\n",
       " 'linear__n_jobs': 1,\n",
       " 'linear__normalize': False,\n",
       " 'memory': None,\n",
       " 'poly': PolynomialFeatures(degree=3, include_bias=True, interaction_only=False),\n",
       " 'poly__degree': 3,\n",
       " 'poly__include_bias': True,\n",
       " 'poly__interaction_only': False,\n",
       " 'steps': [('poly',\n",
       "   PolynomialFeatures(degree=3, include_bias=True, interaction_only=False)),\n",
       "  ('linear',\n",
       "   LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False))]}"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "polyfitter = Pipeline([('poly', PolynomialFeatures(degree=3)),\n",
    "                  ('linear', LinearRegression())])\n",
    "polyfitter.get_params()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The  `Pipeline` object is a way of stacking standard steps\n",
    "into one big estimator, while respecting the usual `fit` and `predict`\n",
    "interfaces. The output of the `get_params` function contains the\n",
    "polynomial degrees we previously looped over to create\n",
    "[Figure](#fig:learning_theory_003), etc. We will use these named parameters\n",
    "in the next code block.  To do this automatically using this\n",
    "`polyfitter` estimator, we need the Grid Search Cross Validation\n",
    "object, `GridSearchCV`.  The next step is to use this to create the\n",
    "grid of parameters we want to loop over as in the following,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "gs=GridSearchCV(polyfitter,{'poly__degree':[1,2,3]},cv=4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The `gs` object will loop over the polynomial degrees up to\n",
    "cubic using four-fold cross validation `cv=4`, like we did manually\n",
    "earlier. The `poly__degree` item comes from the previous `get_params`\n",
    "call.  Now, we just apply the usual `fit` method on the training data,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([ 0.00095195,  0.00054753,  0.00073975]),\n",
       " 'mean_score_time': array([ 0.00028479,  0.00025028,  0.00033075]),\n",
       " 'mean_test_score': array([ -2.94221605, -35.31948004,   0.08695447]),\n",
       " 'mean_train_score': array([ 0.56545383,  0.77306133,  0.9919696 ]),\n",
       " 'param_poly__degree': masked_array(data = [1 2 3],\n",
       "              mask = [False False False],\n",
       "        fill_value = ?),\n",
       " 'params': [{'poly__degree': 1}, {'poly__degree': 2}, {'poly__degree': 3}],\n",
       " 'rank_test_score': array([2, 3, 1], dtype=int32),\n",
       " 'split0_test_score': array([ -2.60268579, -64.70349296,  -0.52620191]),\n",
       " 'split0_train_score': array([ 0.56609653,  0.92464218,  0.99198833]),\n",
       " 'split1_test_score': array([-3.28174632, -5.93546711,  0.70011086]),\n",
       " 'split1_train_score': array([ 0.56481113,  0.62148048,  0.99195087]),\n",
       " 'split2_test_score': array([-3.28174632, -5.93546711,  0.70011086]),\n",
       " 'split2_train_score': array([ 0.56481113,  0.62148048,  0.99195087]),\n",
       " 'split3_test_score': array([ -2.60268579, -64.70349296,  -0.52620191]),\n",
       " 'split3_train_score': array([ 0.56609653,  0.92464218,  0.99198833]),\n",
       " 'std_fit_time': array([  4.21888173e-04,   5.63597769e-05,   1.02502158e-04]),\n",
       " 'std_score_time': array([  4.56014099e-05,   1.61671487e-05,   9.06596444e-05]),\n",
       " 'std_test_score': array([  0.33953027,  29.38401293,   0.61315638]),\n",
       " 'std_train_score': array([  6.42701170e-04,   1.51580851e-01,   1.87327703e-05])}"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "_=gs.fit(Xi,Yi)\n",
    "gs.cv_results_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "the scores shown correspond to the cross validation scores\n",
    "for each of the parameters (e.g., polynomial degrees) using four-fold\n",
    "cross-validation.  Note that the higher scores are better here and\n",
    "the cubic polynomial is best, as we observed earlier. The default\n",
    "$R^2$ metric is used for the scoring in this case as opposed to\n",
    "mean-squared-error. The validation results of this pipeline for the\n",
    "quadratic fit are shown in [Figure](#fig:learning_theory_004), and\n",
    "for the cubic fit, in [Figure](#fig:learning_theory_005). This can\n",
    "be changed by passing the\n",
    "`scoring=make_scorer(mean_squared_error)` keyword argument to\n",
    "`GridSearchCV`.  There is also `RandomizedSearchCV` that does\n",
    "does not necessarily evaluate every point on the grid and\n",
    "instead randomly samples the grid according to an input\n",
    "probability distribution. This is very useful for a large number\n",
    "of hyper-parameters.\n",
    "\n",
    "## Bias and Variance\n",
    "\n",
    "So far, we have been thinking about the average error in terms of in-samples\n",
    "and out-samples, but this depends on a particular training data set. What we\n",
    "want is a concept that extends to *all* possible training data and captures the\n",
    "performance of the estimator in that setting. For example, our ultimate\n",
    "estimator, $\\hat{f}$ is derived from a particular set of training data\n",
    "($\\mathcal{D}$) and is thus denoted, $\\hat{f}_{\\mathcal{D}}$. This makes the\n",
    "out-of-sample error explicitly, $E_{\\texttt{out}}(\\hat{f}_{\\mathcal{D}})$.  To\n",
    "eliminate the dependence on a particular set of training data set, we have to\n",
    "compute the expectation across all training data sets,\n",
    "\n",
    "$$\n",
    "\\mathbb{E}_{\\mathcal{D}}E_{\\texttt{out}}(\\hat{f}_{\\mathcal{D}})=\n",
    "\\texttt{bias}+\\texttt{var}\n",
    "$$\n",
    "\n",
    " where\n",
    "\n",
    "$$\n",
    "\\texttt{bias}(x)= (\\overline{\\hat{f}}(x)-f(x))^2\n",
    "$$\n",
    "\n",
    " and\n",
    "\n",
    "$$\n",
    "\\texttt{var}(x)=\n",
    "\\mathbb{E}_{\\mathcal{D}}(\\hat{f}_{\\mathcal{D}}(x)-\\overline{\\hat{f}}(x))^2\n",
    "$$\n",
    "\n",
    " and where $\\overline{\\hat{f}}$ is the mean of all estimators for all\n",
    "data sets. There is nothing to say that such a mean is an estimator that could\n",
    "have arisen from any *particular* training data, however. It just implies that\n",
    "for any particular point $x$, the mean of the values of all the estimators is\n",
    "$\\overline{\\hat{f}}(x)$.  Therefore, $\\texttt{bias}$ captures the sense\n",
    "that, even if all possible data were presented to the learning method, it\n",
    "would still differ from the target function by this amount.  On the other\n",
    "hand $\\texttt{var}$ shows the variation in the final hypothesis, depending\n",
    "on the training data set, notwithstanding the target function.  Thus, the\n",
    "tension between approximation and generalization is captured by these two\n",
    "terms.  For example, suppose there is only one hypothesis. Then,\n",
    "$\\texttt{var}=0$ because there can be no variation due to a particular set\n",
    "of training data because no matter what that training data is, the learning\n",
    "method always selects the one and only hypothesis. In this case, the bias\n",
    "could be very large, because there is no opportunity for the learning method\n",
    "to alter the hypothesis due to the training data, and the method can only\n",
    "ever pick the single hypothesis!\n",
    "\n",
    "Let's construct an example to make this concrete. Suppose we have a hypothesis\n",
    "set consisting of all linear regressions without an intercept term,  $h(x)=a\n",
    "x$. The training data consists of only two points $\\left\\{(x_i,\\sin(\\pi\n",
    "x_i))\\right\\}_{i=1}^2$ where $x_i$ is drawn uniformly from the interval\n",
    "$[-1,1]$. From the section [ch:stats:sec:reg](#ch:stats:sec:reg) on linear\n",
    "regression, we know that\n",
    "the solution for $a$ is the following,\n",
    "\n",
    "<!-- Equation labels as ordinary links -->\n",
    "<div id=\"eq:sola\"></div>\n",
    "\n",
    "$$\n",
    "a = \\frac{\\mathbf{x}^T \\mathbf{y}}{\\mathbf{x}^T \\mathbf{x}}\n",
    "$$\n",
    "\n",
    " where $\\mathbf{x}=[x_1,x_2]$ and $\\mathbf{y}=[y_1,y_2]$. The\n",
    "$\\overline{\\hat{f}}(x)$ represents the solution over all possible sets\n",
    "of training data for a fixed $x$. The following code shows how to\n",
    "construct the training data,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from scipy import stats\n",
    "def gen_sindata(n=2):\n",
    "    x=stats.uniform(-1,1) # define random variable\n",
    "    v = x.rvs((n,1)) # generate sample\n",
    "    y = np.sin(np.pi*v) # use sample for sine\n",
    "    return (v,y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Again, using Scikit-learn's `LinearRegression` object, we\n",
    "can compute the $a$ parameter. Note that we have to set\n",
    "`fit_intercept=False` keyword to suppress the default automatic\n",
    "fitting of the intercept."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 2.0570357]])"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr = LinearRegression(fit_intercept=False)\n",
    "lr.fit(*gen_sindata(2))\n",
    "lr.coef_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<!-- *foo* -->\n",
    "\n",
    "**Programming Tip.**\n",
    "\n",
    "Note that we designed `gen_sindata` to return a tuple to use the automatic\n",
    "unpacking feature of Python functions in `lr.fit(*gen_sindata())`.  In other\n",
    "words, using the asterisk notation means we don't have to separately assign the\n",
    "outputs of `gen_sindata` before using them for `lr.fit`.\n",
    "\n",
    "\n",
    "\n",
    "<!-- dom:FIGURE: [fig-machine_learning/learning_theory_006.png, width=500\n",
    "frac=0.75] For a two-element training set consisting of the points shown, the\n",
    "line is the best fit over the hypothesis set, $h(x)=a x$. <div\n",
    "id=\"fig:learning_theory_006\"></div> -->\n",
    "<!-- begin figure -->\n",
    "<div id=\"fig:learning_theory_006\"></div>\n",
    "\n",
    "<p>For a two-element training set consisting of the points shown, the line is\n",
    "the best fit over the hypothesis set, $h(x)=a x$.</p>\n",
    "<img src=\"fig-machine_learning/learning_theory_006.png\" width=500>\n",
    "\n",
    "<!-- end figure -->"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fb30e1c8a90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "lr = LinearRegression(fit_intercept=False)\n",
    "xi=np.linspace(-1,1,50)\n",
    "yi= np.sin(np.pi*xi)\n",
    "xg,yg = gen_sindata()\n",
    "fig,ax=subplots()\n",
    "_=lr.fit(xg,yg)\n",
    "_=ax.plot(xi,yi,'--k',label='target')\n",
    "_=ax.plot(xg,yg,'o',ms=10,color='gray')\n",
    "_=ax.plot(xi,lr.predict(xi.reshape(-1,1)),color='k',label='best fit')\n",
    "_=ax.set_title('$a=%3.3g$'%(lr.coef_),fontsize=24)\n",
    "_=ax.set_xlabel(r'$x$',fontsize=28)\n",
    "_=ax.set_ylabel(r'$y$',fontsize=28)\n",
    "_=ax.legend(fontsize=18,loc=0)\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this case, $\\overline{\\hat{f}}(x) = \\overline{a}x$, where\n",
    "$\\overline{a}$ the the expected value of the parameter over *all* possible\n",
    "training data sets.  Using our knowledge of probability, we can write this out\n",
    "explicitly as the following,\n",
    "\n",
    "$$\n",
    "\\overline{a} = \\mathbb{E}\\left(\\frac{x_1\\sin(\\pi x_1)+ x_2\\sin(\\pi x_2)\n",
    "}{x_1^2+x_2^2}\\right)\n",
    "$$\n",
    "\n",
    " where $\\mathbf{x}=[x_1,x_2]$ and $\\mathbf{y}=[\\sin(\\pi x_1),\\sin(\\pi\n",
    "x_2)]$ in Equation [eq:sola](#eq:sola). However, computing this expectation\n",
    "analytically is hard, but for this specific situation, $\\overline{a} \\approx\n",
    "1.43$. To get this value using simulation, we just loop over the process,\n",
    "collect the outputs, and the average them as in the following,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.3753786877340366"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a_out=[] # output container\n",
    "for i in range(100):\n",
    "    _=lr.fit(*gen_sindata(2)) \n",
    "    a_out.append(lr.coef_[0,0])\n",
    "\n",
    "np.mean(a_out) # approx 1.43"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<!-- * -->\n",
    "\n",
    " Note that you may have to loop over many more iterations to get\n",
    "close to the purported value. The $\\texttt{var}$ requires the variance of $a$,\n",
    "\n",
    "$$\n",
    "\\texttt{var}(x) = \\mathbb{E}((a-\\overline{a})x)^2 = x^2\n",
    "\\mathbb{E}(a-\\overline{a})^2 \\approx 0.71 x^2\n",
    "$$\n",
    "\n",
    " The $\\texttt{bias}$ is the following,\n",
    "\n",
    "$$\n",
    "\\texttt{bias}(x) = (\\sin(\\pi x)-\\overline{a}x)^2\n",
    "$$\n",
    "\n",
    " [Figure](#fig:learning_theory_007) shows the $\\texttt{bias}$,\n",
    "$\\texttt{var}$, and mean-squared-error for this problem. Notice that there is\n",
    "zero bias and zero variance when $x=0$. This is because the learning method\n",
    "cannot help but get that correct because all the hypotheses happen to match the\n",
    "value of the target function at that point! Likewise, the $\\texttt{var}$ is\n",
    "zero because all possible pairs, which constitute the training data, are fitted\n",
    "through zero because $h(x)=a x$ has no choice but to go through zero. The\n",
    "errors are worse at the end points. As we discussed in our statistics chapter,\n",
    "those points have the most leverage against the hypothesized models and result\n",
    "in the worst errors. Notice that reducing the edge-errors depends on getting\n",
    "exactly those points near the edges as training data. The sensitivity to a\n",
    "particular data set is reflected in this behavior.\n",
    "\n",
    "<!-- dom:FIGURE: [fig-machine_learning/learning_theory_007.png, width=500\n",
    "frac=0.8] These curves decompose the mean squared error into its constituent\n",
    "bias and variance for this example.  <div id=\"fig:learning_theory_007\"></div>\n",
    "-->\n",
    "<!-- begin figure -->\n",
    "<div id=\"fig:learning_theory_007\"></div>\n",
    "\n",
    "<p>These curves decompose the mean squared error into its constituent bias and\n",
    "variance for this example.</p>\n",
    "<img src=\"fig-machine_learning/learning_theory_007.png\" width=500>\n",
    "\n",
    "<!-- end figure -->"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nhz1PlFJKVQxjTJGZU9deey3du3d3+5kvvfSSw1Rzb7r//vuJj4/nr3/9KytXrnTY4NmXrEbRFphi\njFlrjLnozYAqg88//5yFCxfy7rvvEh8fT0ZGhkefP3jwYPLy8pg7d67bz/jTn/7EpZdeai9fvHix\n3N1fSimlXPfdd9+xatUqh3PPPvus28/bvXs3jz76qL3byFPmz59P//79OXXqlMP58PBw1q1bxwsv\nvECNGjU8+prlYTXB2Q+EezOQyqTwL9Utt9xC9erVPfr8+Ph4Lr/8crdnU4HtF3LKlCkO59599132\n7t1bzuiUUkpZVVzrzQ033EBiYqLbz/z4448BGDlyZLliK2z8+PFcc801LFq0qNjkKzQ01GOv5SlW\nE5xngEfzBxqrMrz11lt8++23dOvWrcgvLuCRFp3Ro0ezYsUKdu/e7fYzkpKSaNGihb2cnZ3Nc89V\nqbHiSinlU19++SXJyckO58rTemOM4cMPP6Rnz540bdq0vOHZFZ6qPmvWLM6cOeOxZ3uL1QTnOuAS\nYI+IfCMi7zkds70YY0AaMmQIK1eudNjFG2yLA3bs2JHbb7+9XGNeCjLzgkzdHaGhoUUSsNmzZ7Nr\n1y63n6mUUsqavLy8In+Dhw0bxuWXX+72Mzdt2sTWrVsZPXp0ueJy9sc//pE+ffpw5513snXrVmrW\nDID2DisjkYE9ZRy7rTzHF4c3Z1G549VXX7WPNm/cuHG5Zlt999135uzZs+WKJzs728TFxTmM3L/1\n1lvL9UyllFJl+/jjjx3+9oqI2bJlS7me+fnnn5vY2Fhz7Ngxl+/Ny8szH3/8sYmLizM7duwoct2b\ns4NdgSdnURljmpdxtCj7KQpg48aN9n8/+OCD5eq3vPbaa8s9oCskJISnn37a4dyHH35YJTdmU0qp\nipKbm1vkb++oUaNo165duZ574403cvjwYWJiYly+d9KkSYwcOZIdO3bwyCOPFLnuj+NsSuMfc7mq\nkFmzZvHTTz/xxz/+kQkTJhS5vmvXLpdWKX7ttdd48803yxXTiBEjiI+Pt5eNMUX+x1NKKeU5c+bM\ncdjmJygoiKeeeqpcz8zIyMAYQ3Cweyu33HbbbfZ///zzz15Z5qQiuZzgiEisiFzqfHgjuMqqX79+\nfPrpp4SFhTmcP378OJ07d6Z3794sW7bM0rN++OEHXn755WL7TK0KCgrimWeecTj3ySefOLQ2KaWU\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fb30bbca190>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,ax=subplots()\n",
    "fig.set_size_inches((8,5))\n",
    "_=ax.plot(xi,(1.43*xi-yi)**2,'--k',label='bias(x)')\n",
    "_=ax.plot(xi,0.71*(xi)**2,':k',label='var(x)',lw=3.)\n",
    "_=ax.plot(xi,(1.43*xi-yi)**2+0.71*(xi)**2,color='k',lw=4,label='MSE')\n",
    "_=ax.legend(fontsize=18,loc=0)\n",
    "_=ax.set_ylabel('Mean Squared Error (MSE)',fontsize=16)\n",
    "_=ax.set_xlabel('x',fontsize=18)\n",
    "_=ax.tick_params(labelsize='x-large')\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "What if we had more than two points in the training data? What would happen to\n",
    "$\\texttt{var}$ and $\\texttt{bias}$?  Certainly, the $\\texttt{var}$ would\n",
    "decrease because it would be harder and harder to generate training data sets\n",
    "that would be substantially different from each other. The bias would also\n",
    "decrease because more points in the training data means better approximation of\n",
    "the sine function over the interval. What would happen if we changed the\n",
    "hypothesis set to include more complex polynomials?  As we have already seen\n",
    "with our polynomial regression earlier in this chapter, we would see the same\n",
    "overall effect as here, but with relatively smaller absolute errors and the\n",
    "same edge effects we noted earlier. The corresponding Jupyter/IPython Notebook\n",
    "has the source code to help you can try these ideas and see for yourself.\n",
    "\n",
    "## Learning Noise\n",
    "\n",
    "We have thus far not considered the effect of noise in our analysis\n",
    "of learning. The following example should help resolve this. Let's suppose\n",
    "we have the following scalar target function,\n",
    "\n",
    "$$\n",
    "y(\\mathbf{x})=\\mathbf{w}_o^T \\mathbf{x} + \\eta\n",
    "$$\n",
    "\n",
    " where $\\eta \\sim \\mathcal{N}(0,\\sigma^2)$ is an additive noise term\n",
    "and $\\mathbf{w}, \\mathbf{x} \\in \\mathbb{R}^d$. Furthermore, we have $n$\n",
    "measurements of $y$. This means the training set consists of $\\lbrace\n",
    "(\\mathbf{x}_i,y_i) \\rbrace_{i=1}^n$. Stacking the measurements together into a\n",
    "vector format,\n",
    "\n",
    "$$\n",
    "\\mathbf{y}=\\mathbf{X} \\mathbf{w}_o + \\boldsymbol{\\eta}\n",
    "$$\n",
    "\n",
    " with $\\mathbf{y},\\boldsymbol{\\eta}\\in\\mathbb{R}^n$,$\\mathbf{w}_o\\in\n",
    "\\mathbb{R}^d$ and $\\mathbf{X}$ contains $\\mathbf{x}_i$ as columns.  The\n",
    "hypothesis set consists of all linear models,\n",
    "\n",
    "$$\n",
    "h(\\mathbf{w},\\mathbf{x}) = \\mathbf{w}^T \\mathbf{x}\n",
    "$$\n",
    "\n",
    " We need to the learn the correct $\\mathbf{w}$ from the\n",
    "hypothesis set given the training data. So far, this is the usual\n",
    "setup for the problem, but how does the noise factor play to this? In\n",
    "our usual situation, the training set consists of randomly chosen\n",
    "elements from a larger space. In this case, that would be the same as\n",
    "getting random sets of $\\mathbf{x}_i$ vectors. That still happens in\n",
    "this case, but the problem is that even if the same $\\mathbf{x}_i$\n",
    "appears twice, it will not be associated with the same $y$ value due\n",
    "the additive noise coming from $\\eta$. To keep this simple, we assume\n",
    "that there is a fixed set of $\\mathbf{x}_i$ vectors and that we get\n",
    "all of them in the training set.  For every specific training set, we\n",
    "know how to solve for the MMSE from our earlier statistics work,\n",
    "\n",
    "$$\n",
    "\\mathbf{w} =  (\\mathbf{X}^T \\mathbf{X})^{-1} \\mathbf{X}^T \\mathbf{y}\n",
    "$$\n",
    "\n",
    "Given this setup, what is the in-sample mean-squared-error? Because\n",
    "this is the MMSE solution, we know from our study of the associated\n",
    "orthogonality of such systems that we have,\n",
    "\n",
    "<!-- Equation labels as ordinary links -->\n",
    "<div id=\"eq:Ein\"></div>\n",
    "\n",
    "$$\n",
    "E_{\\texttt{in}}=\\lVert \\mathbf{y} \\rVert^2 - \\lVert \\mathbf{X w} \\rVert^2\n",
    "$$\n",
    "\n",
    " where our best hypothesis, $\\mathbf{h} = \\mathbf{X w}$. Now, we want\n",
    "to compute the expectation of this over the distribution of $\\eta$.  For\n",
    "instance, for the first term, we want to compute,\n",
    "\n",
    "$$\n",
    "\\mathbb{E} \\lvert \\mathbf{y} \\rvert^2 = \\frac{1}{n} \\mathbb{E} (\\mathbf{y}^T\n",
    "\\mathbf{y}) = \\frac{1}{n} \\mathrm{Tr} \\: \\mathbb{E} (\\mathbf{y} \\mathbf{y}^T)\n",
    "$$\n",
    "\n",
    " where $\\mathrm{Tr}$ is the matrix trace operator (i.e., sum of the\n",
    "diagonal\n",
    "elements). Because each $\\eta$ are independent, we have\n",
    "\n",
    "<!-- Equation labels as ordinary links -->\n",
    "<div id=\"eq:eyy\"></div>\n",
    "\n",
    "$$\n",
    "\\mathrm{Tr} \\: \\mathbb{E} (\\mathbf{y} \\mathbf{y}^T) = \\mathrm{Tr} \\: \\mathbf{X}\n",
    "\\mathbf{w}_o \\mathbf{w}_o^T \\mathbf{X}^T + \\sigma^2 \\mathrm{Tr} \\: \\mathbf{I} =\n",
    "\\mathrm{Tr} \\: \\mathbf{X} \\mathbf{w}_o \\mathbf{w}_o^T \\mathbf{X}^T + n \\sigma^2\n",
    "$$\n",
    "\n",
    " where $\\mathbf{I}$ is the $n \\times n$ identity matrix. For the\n",
    "second term in Equation \\eq[eq:Ein](#eq:Ein), we have\n",
    "\n",
    "$$\n",
    "\\lvert\\mathbf{X w} \\rvert^2 = \\mathrm{Tr} \\: \\mathbf{X w}\\mathbf{w}^T\n",
    "\\mathbf{X}^T = \\mathrm{Tr}\\: \\mathbf{X} (\\mathbf{X}^T \\mathbf{X})^{-1}\n",
    "\\mathbf{X}^T \\mathbf{y} \\mathbf{y}^T \\mathbf{X} (\\mathbf{X}^T \\mathbf{X})^{-1}\n",
    "\\mathbf{X}^T\n",
    "$$\n",
    "\n",
    " The expectation of this is the following,\n",
    "\n",
    "<!-- Equation labels as ordinary links -->\n",
    "<div id=\"_auto1\"></div>\n",
    "\n",
    "$$\n",
    "\\mathbb{E} \\lvert \\mathbf{X w} \\rvert^2 = \\mathrm{Tr} \\:  \\mathbf{X}\n",
    "(\\mathbf{X}^T \\mathbf{X})^{-1} \\mathbf{X}^T \\mathbb{E}(\\mathbf{y} \\mathbf{y}^T)\n",
    "\\mathbf{X} (\\mathbf{X}^T \\mathbf{X})^{-1} \\mathbf{X}^T\n",
    "$$\n",
    "\n",
    " which, after substituting in Equation [eq:eyy](#eq:eyy), yields,\n",
    "\n",
    "<!-- Equation labels as ordinary links -->\n",
    "<div id=\"_auto2\"></div>\n",
    "\n",
    "$$\n",
    "\\mathbb{E} \\lvert \\mathbf{X w} \\rvert^2 = \\mathrm{Tr} \\:  \\mathbf{X}\n",
    "\\mathbf{w}_o \\mathbf{w}_o^T \\mathbf{X}^T + \\sigma^2 d\n",
    "$$\n",
    "\n",
    " Next, assembling Equation [eq:Ein](#eq:Ein) from this and Equation\n",
    "[eq:eyy](#eq:eyy) gives,\n",
    "\n",
    "<!-- Equation labels as ordinary links -->\n",
    "<div id=\"_auto3\"></div>\n",
    "\n",
    "$$\n",
    "\\mathbb{E}(E_{\\texttt{in}})=\\frac{1}{n}E_{\\texttt{in}}=\\sigma^2\n",
    "\\left(1-\\frac{d}{n}\\right)\n",
    "$$\n",
    "\n",
    " which provides an explicit relationship between the noise power,\n",
    "$\\sigma^2$, the complexity of the method ($d$) and the number of training\n",
    "samples ($n$).  This is very illustrative because it reveals the ratio $d/n$,\n",
    "which is a statement of the trade-off between model complexity and in-sample\n",
    "data size. From our analysis of the VC-dimension, we already know that there is\n",
    "a complicated bound that represents the penalty for complexity, but this\n",
    "problem is unusual in that we can actually derive an expression for this\n",
    "without resorting to bounding arguments. Furthermore, this result shows, that\n",
    "with a very large number of training examples ($n \\rightarrow \\infty$), the\n",
    "expected in-sample error approaches $\\sigma^2$. Informally, this means that the\n",
    "learning method cannot *generalize* from noise and thus can only reduce the\n",
    "expected in-sample error by memorizing the data (i.e., $d \\approx n$).\n",
    "\n",
    "The corresponding analysis for the expected out-of-sample error is similar,\n",
    "but more complicated because we don't have the orthogonality condition. Also,\n",
    "the out-of-sample data has different noise from that used to derive the weights,\n",
    "$\\mathbf{w}$. This results in extra cross-terms,\n",
    "\n",
    "<!-- Equation labels as ordinary links -->\n",
    "<div id=\"_auto4\"></div>\n",
    "\n",
    "$$\n",
    "E_{\\texttt{out}} = \\mathrm{Tr} \\Biggl( \\mathbf{X} \\mathbf{w}_o \\mathbf{w}_o^T\n",
    "\\mathbf{X}^T + \\boldsymbol{\\xi} \\boldsymbol{\\xi}^T + \\mathbf{X} \\mathbf{w}\n",
    "\\mathbf{w}^T \\mathbf{X}^T - \\mathbf{X} \\mathbf{w} \\mathbf{w}_o^T \\mathbf{X}^T\n",
    "$$\n",
    "\n",
    "<!-- Equation labels as ordinary links -->\n",
    "<div id=\"_auto5\"></div>\n",
    "\n",
    "$$\n",
    "                   - \\mathbf{X} \\mathbf{w}_o \\mathbf{w}^T \\mathbf{X}^T \\Biggr)\n",
    "$$\n",
    "\n",
    " where we are using the $\\boldsymbol{\\xi}$ notation for the noise in\n",
    "the\n",
    "out-of-sample case, which is different from that in the in-sample case.\n",
    "Simplifying this leads to the following,\n",
    "\n",
    "<!-- Equation labels as ordinary links -->\n",
    "<div id=\"_auto6\"></div>\n",
    "\n",
    "$$\n",
    "\\mathbb{E}(E_{\\texttt{out}})=\\mathrm{Tr}\\: \\sigma^2 \\mathbf{I}  + \\sigma^2\n",
    "\\mathbf{X}(\\mathbf{X}^T \\mathbf{X})^{-1} \\mathbf{X}^T\n",
    "$$\n",
    "\n",
    " Then, assembling all of this gives,\n",
    "\n",
    "<!-- Equation labels as ordinary links -->\n",
    "<div id=\"eq:Eout\"></div>\n",
    "\n",
    "$$\n",
    "\\mathbb{E}(E_{\\texttt{out}}) = \\sigma^2 \\left(1+\\frac{d}{n}\\right)\n",
    "$$\n",
    "\n",
    " which shows that even in the limit of large $n$, the expected\n",
    "out-of-sample error also approaches the noise power limit, $\\sigma^2$. This\n",
    "shows that memorizing the in-sample data (i.e., $d/n \\approx 1$) imposes a\n",
    "proportionate penalty on the out-of-sample performance (i.e., $\\mathbb{E}\n",
    "E_{\\texttt{out}} \\approx 2\\sigma^2$ when $\\mathbb{E}E_{\\texttt{in}} \\approx 0$\n",
    ").\n",
    "\n",
    "The following code simulates this important example:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def est_errors(d=3,n=10,niter=100):\n",
    "    assert n>d\n",
    "    wo = np.matrix(arange(d)).T \n",
    "    Ein = list()\n",
    "    Eout = list()\n",
    "    # choose any set of vectors\n",
    "    X = np.matrix(np.random.rand(n,d)) \n",
    "    for ni in range(niter):\n",
    "        y = X*wo + np.random.randn(X.shape[0],1)\n",
    "        # training weights\n",
    "        w = np.linalg.inv(X.T*X)*X.T*y\n",
    "        h = X*w\n",
    "        Ein.append(np.linalg.norm(h-y)**2)\n",
    "        # out of sample error\n",
    "        yp = X*wo + np.random.randn(X.shape[0],1)\n",
    "        Eout.append(np.linalg.norm(h-yp)**2)\n",
    "    return (np.mean(Ein)/n,np.mean(Eout)/n)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Programming Tip.**\n",
    "\n",
    "Python has an `assert` statement to make sure that certain entry conditions for\n",
    "the variables in the function are satisfied.  It is a good practice to use\n",
    "reasonable assertions at entry and exit to improve the quality of code.\n",
    "\n",
    "\n",
    "\n",
    " The following runs the simulation for the given value of $d$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "d=10\n",
    "xi = arange(d*2,d*10,d//2)\n",
    "ei,eo=np.array([est_errors(d=d,n=n,niter=100) for n in xi]).T"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "which results in [Figure](#fig:learning_theory_008). This\n",
    "figure shows the estimated expected in-sample and out-of-sample errors\n",
    "from our simulation compared with our  corresponding analytical\n",
    "result. The heavy horizontal line shows the variance of the additive\n",
    "noise $\\sigma^2=1$. Both these curves approach this asymptote because\n",
    "the noise is the ultimate learning limit for this problem. For a given\n",
    "dimension $d$, even with an infinite amount of training data, the\n",
    "learning method cannot generalize beyond the limit of the noise power.\n",
    "Thus, the expected generalization error is\n",
    "$\\mathbb{E}(E_{\\texttt{out}})-\\mathbb{E}(E_{\\texttt{in}})=2\\sigma^2\\frac{d}{n}$.\n",
    "\n",
    "<!-- dom:FIGURE: [fig-machine_learning/learning_theory_008.png, width=500\n",
    "frac=0.85]  The dots show the learning curves estimated from the simulation and\n",
    "the solid lines show the corresponding terms for our analytical result. The\n",
    "horizontal line shows the variance of the additive noise ($\\sigma^2=1$ in this\n",
    "case). Both the expected in-sample and out-of-sample errors asymptotically\n",
    "approach this line. <div id=\"fig:learning_theory_008\"></div> -->\n",
    "<!-- begin figure -->\n",
    "<div id=\"fig:learning_theory_008\"></div>\n",
    "\n",
    "<p>The dots show the learning curves estimated from the simulation and the solid\n",
    "lines show the corresponding terms for our analytical result. The horizontal\n",
    "line shows the variance of the additive noise ($\\sigma^2=1$ in this case). Both\n",
    "the expected in-sample and out-of-sample errors asymptotically approach this\n",
    "line.</p>\n",
    "<img src=\"fig-machine_learning/learning_theory_008.png\" width=500>\n",
    "\n",
    "<!-- end figure -->"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fb30bbca910>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,ax=subplots()\n",
    "fig.set_size_inches((10,6))\n",
    "_=ax.plot(xi,ei,'ks',label=r'$\\hat{E}_{in}$',lw=3.,ms=10,alpha=.5)\n",
    "_=ax.plot(xi,eo,'ko',label=r'$\\hat{E}_{out}$',lw=3.,ms=10,alpha=.5)\n",
    "_=ax.plot(xi,(1-d/np.array(xi)),'--k',label=r'${E}_{in}$',lw=3)\n",
    "_=ax.plot(xi,(1+d/np.array(xi)),':k',label=r'${E}_{out}$')\n",
    "_=ax.hlines(1,xi.min(),xi.max(),lw=3)\n",
    "_=ax.set_xlabel('size of training set ($n$)',fontsize=22)\n",
    "_=ax.set_ylabel('MSE',fontsize=22)\n",
    "_=ax.legend(loc=4,fontsize=18)\n",
    "_=ax.set_title('dimension = %d'%(d),fontsize=22)\n",
    "fig.tight_layout()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
